2014-11-21 3 views
0

У меня есть компонент JSF 2.2, который отлично работает, когда находится в проекте WAR. Таким образом, файл класса попадает в папку WEB-INF/classes/com/testFacesException: Expression Error: Именованный объект: xxx не найден, когда находится в WEB-INF/libs/

Но когда класс упакован в файл JAR (из другого проекта Maven) и находится в папке WEB-INF/lib /example1.jar, то я получаю следующую ошибку.

Caused by: javax.faces.FacesException: Expression Error: Named Object: HtmlHelloWorld not found. 
    at com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations(ApplicationImpl.java:1933) 
    at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:1168) 

Может кто-нибудь пролить свет на то, почему я получаю это или как его исправить.

Вот мой код, а не то, что я думаю, что это имеет какое-то влияние на проблему.

@FacesComponent(value = "HtmlHelloWorld") 
public class HtmlHelloWorld extends UIComponentBase { 
    @Override 
    public String getFamily() { 
     return null; 
    } 

    @Override 
    public void encodeAll(FacesContext context) throws IOException { 
    } 
} 

Я также должен добавить, что у меня есть «faces-config.xml», расположенный в корне JAR. Однако это не имеет никакого значения.

лица-config.xml

<?xml version='1.0' encoding='UTF-8'?> 
<faces-config xmlns="http://java.sun.com/xml/ns/javaee" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" 
       version="2.0"> 

    <application> 
    <resource-bundle> 
     <base-name>i18n</base-name> 
     <var>bundle</var> 
    </resource-bundle> 
    <locale-config> 
     <default-locale>en</default-locale> 
     <supported-locale>en</supported-locale> 
     <supported-locale>fr</supported-locale> 
     <supported-locale>de</supported-locale> 
    </locale-config> 
    </application> 

</faces-config> 

ответ

0

у меня не было моего лица-config.xml, расположенный в папке META-INF

Project 
| src 
| | main 
| | java 
|  | com.test.TestFacesComponent 
| | resources 
|  | META-INF 
|  | faces-config.xml 

ссылки: Oracle Doc экстракт ....

Реализация JavaServer Faces находит файл или файлы путем поиска:

Ресурс с именем /META-INF/faces-config.xml в любом из файлов JAR в каталоге веб-приложения/WEB-INF/lib/и в загрузчиках родительского класса. Если ресурс с этим именем существует, он загружается как ресурс конфигурации. Этот метод является практичным для упакованной библиотеки, содержащей некоторые компоненты и средства визуализации.

Параметр инициализации контекста javax.faces.application.CONFIG_FILES, который указывает один или несколько путей с разделителями-запятыми для нескольких файлов конфигурации для вашего веб-приложения. Этот метод, скорее всего, будет использоваться для приложений корпоративного масштаба, которые делегируют отдельным группам ответственность за сохранение файла для каждой части большого приложения.

Ресурс, названный faces-config.xml в каталоге/WEB-INF/вашего приложения. Таким образом, большинство простых приложений будут делать свои файлы конфигурации доступными.

Смежные вопросы