我将项目从myfaces 2.1迁移到2.2,现在我的复合组件不会渲染。
页面输出显示:
<meg:megamenu menubean="ec.common.WetTopMenuBarBean@183817e" id="topMenuLevel0" />
我应该将megamenu扩展为渲染的html。
这一切都在myfaces 2.1中有效。有没有人有任何想法?
该结构基本上是一个使用模板的页面,即:包含另一个可重用的内容,然后使用复合组件。
页面:
<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}" />
我也尝试过日食Juno和Kepler。
谢谢,
丹
答案 0 :(得分:3)
我在我自己的一个例子中试过这个并且你是对的:默认情况下,不可能在子目录中使用复合组件。正如莱昂纳多在对该问题的评论中指出的那样,JSF规范中不允许这样做。
但是,在MyFaces中,可以通过将上下文参数org.apache.myfaces.STRICT_JSF_2_ALLOW_SLASH_LIBRARY_NAME
设置为true
来更改此行为。
使用此参数集,我可以在子目录中使用MyFaces 2.2.0的复合组件。
答案 1 :(得分:1)
正确设置命名空间,它应该有效:
的xmlns:微克= “http://java.sun.com/jsf/composite/components/topNav”