2014-02-05 4 views
1

myfaces 2.1에서 2.2로 프로젝트를 마이그레이션했는데 이제는 복합 컴포넌트가 렌더링되지 않습니다.JSF 2.2의 복합 컴포넌트가 렌더링되지 않습니다.

페이지 출력 보여준다

<meg:megamenu menubean="[email protected]" id="topMenuLevel0" /> 

어디 날 : megamenu 렌더링 된 HTML로 확장되어야한다.

모든 것이 myfaces 2.1에서 작동했습니다. 누구든지 아이디어가 있습니까?

구조는 기본적으로 템플리트를 사용하는 ui : 재사용 가능한 다른 내용을 포함하고 복합 구성 요소를 사용하는 페이지입니다.

페이지 :

<ui:composition template="/templates/wetLayout.xhtml" > 

템플릿 :

<ui:include src="#{chosenTheme == 'intranet' ? '/sections/common/intranet/commonHeader.xhtml' : '/sections/common/commonHeader.xhtml'}" >  

서브 섹션

... 
xmlns:meg="http://xmlns.jcp.org/jsf/composite/components/topNav" 
... 
<meg:megamenu id="topMenuLevel0" menuBean="#{wetTopMenuBarBean}" /> 

가 나는 또한 이클립스 주노와 케플러 모두 그것을 시도했다.

감사합니다,

+0

하지만 나머지 페이지가 제대로 렌더링되고 있습니까? – mabi

+0

예, 다른 모든 것은 잘 렌더링됩니다. 복합 구성 요소 만 렌더링에 실패합니다. 마치 myfaces 구현이 구성 요소를 읽고 확장하지 않는 것입니다. – Danpoleary

+1

org.apache.myfaces.STRICT_JSF_2_ALLOW_SLASH_LIBRARY_NAME 웹 구성 매개 변수가 true로 설정되어 있는지 확인 했습니까? 스펙에 따르면 기본적으로 라이브러리에는 슬래시가 허용되지 않으며 libraryName은 components/topNav입니다. – lu4242

답변

3

나는 내 자신의 예에서 이것을 시도했고 당신이 옳다 : 기본적으로 하위 디렉토리에 합성 구성 요소를 사용할 수 없다. 레오나르도 (Leonardo)는 질문에 대한 논평에서 지적했듯이 JSF 사양에서는 허용되지 않습니다.

그러나 MyFaces에서는이 동작을 컨텍스트 매개 변수 org.apache.myfaces.STRICT_JSF_2_ALLOW_SLASH_LIBRARY_NAMEtrue으로 설정하여 변경할 수 있습니다.

이 매개 변수 세트를 사용하면 MyFaces 2.2.0이있는 하위 디렉토리에서 복합 구성 요소를 사용할 수 있습니다.

1

올바르게 네임 스페이스를 설정하고 그것을 작동합니다 :

에 xmlns : 메가 = "http://java.sun.com/jsf/composite/components/ topNav "

+0

이전 네임 스페이스와 새 네임 스페이스 모두 시도해 본 경우 모두 실패합니다 – Danpoleary