2012-01-26 2 views
1

war 파일에 taglibrary를 압축 할 수 없습니다. 태그를 프로젝트에서 추가 라이브러리로 옮겼습니다. 현재 프로젝트는 현재 상황에 따라 다릅니다. taglibrary 파일을 태그가 들어있는 jar 파일의 META-INF 디렉토리에 넣습니다 (설명은 here). 그러나 페이지가 작동하지 않습니다.Facelet 태그 라이브러리 메커니즘이 예상대로 작동하지 않습니다.

Expression Error: Named Object: eu.barbucha.barbatag.simple.PropertyTag not found. 

서버에서 taglibrary를 찾을 수 있습니다. 그렇지 않으면 페이지 작품, 한 경고의 메시지가 나타납니다

Warning: This page calls for XML namespace http://barbucha.eu/tags declared with prefix br but no taglibrary exists for that namespace. 

따라서 질문은 : 서버가 클래스를 바로 기술자를 발견,하지만 왜? WEB-INF/lib/barbatag.jar의 클래스를 WEB-INF/classes으로 복사하고 관리 콘솔에서 webapp를 다시 시작하면 페이지가 작동합니다. 서버는 applictation 클래스에 직접 포함되어 있지만 WEB-INF/lib 디렉토리에 저장된 jar가 아닌 UI 구성 요소도 찾습니다. 한편 서버는 jar에서 taglib 설명자를로드합니다. 중요한 점

<tag> 
    <display-name>The component taking values from a property file</display-name> 
    <tag-name>property</tag-name> 
    <component> 
     <component-type>eu.barbucha.barbatag.simple.PropertyTag</component-type> 
    </component> 
</tag> 

한 potentionally : 중요한 태그의

package eu.barbucha.barbatag.simple;  

@FacesComponent("eu.barbucha.barbatag.simple.PropertyTag") 
public class PropertyTag extends UIComponentBase { ... } 

정의 : 그것은 ... 중요한 클래스의 선언 정말 혼란 나는 스프링 MVC를 사용하고 있습니다.

+0

내 taglibrary JAR에는'faces-config.xml' 파일이없는 것 같습니다. JSF 스팩은 그렇지 않으면 주석 스캐닝을 요구하지 않는다. ([주석에 주석이 달린 사용자 정의 JSF2 컴포넌트를 찾을 수 없음] (http://stackoverflow.com/questions/6150926/cannot-find-annotated-custom-jsf2-component-in-jar)) –

답변

3

@FacesComponent과 같은 JSF 특정 주석이있는 클래스의 JSF에서 JAR 파일을 스캔하려면 JAR에 /META-INF/faces-config.xml 파일을 제공해야합니다. 이는 JSF가 클래스에 대한 모든 단일 JAR 파일을 불필요하게 검색하지 못하도록하기 위해 수행됩니다 (많은 시간이 소요될 경우 CPU 사용량이 많을 수 있음).

+1

감사합니다. 비어있는'faces-config.xml' (단지'')이 저의 문제를 해결했습니다. –

+0

반갑습니다. – BalusC

관련 문제