JSF 2.2中的复合组件不会呈现

时间:2014-02-05 16:32:48

标签: html5 myfaces jsf-2.2

我将项目从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。

谢谢,

2 个答案:

答案 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”