2014-11-21 2 views
0
에있는 경우 xxx를 찾을 수 없습니다.

WAR 프로젝트에있을 때 제대로 작동하는 JSF 2.2 구성 요소가 있습니다. 클래스 파일을 WEB-INF/classes/com/test 폴더에 넣습니다.FacesException : 식 오류 : 명명 된 개체 : WEB-INF/libs/

그러나 클래스가 다른 Maven 프로젝트의 JAR 파일로 패키지화되어 있고 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 구현은 다음을 찾음으로써 파일을 찾습니다.

웹 응용 프로그램의/WEB-INF/lib/디렉토리 및 상위 클래스 로더에있는 JAR 파일의 /META-INF/faces-config.xml이라는 리소스. 이 이름의 자원이 있으면 구성 자원으로로드됩니다. 이 방법은 일부 구성 요소와 렌더러가 포함 된 패키지 라이브러리에 실용적입니다.

웹 응용 프로그램의 여러 구성 파일에 대한 하나 이상의 (쉼표로 구분 된) 경로를 지정하는 컨텍스트 초기화 매개 변수 javax.faces.application.CONFIG_FILES. 이 방법은 큰 응용 프로그램의 각 부분에 대해 파일을 유지 관리하는 책임을 개별 그룹에 위임하는 엔터프라이즈 규모의 응용 프로그램에 가장 많이 사용됩니다.

응용 프로그램의/WEB-INF/디렉토리에있는 faces-config.xml 자원. 이것이 가장 간단한 응용 프로그램이 구성 파일을 사용할 수있게하는 방법입니다.