在复合组件中使用f:importConstants
的最佳方法是什么?
您无法将f:metadata
放在此处,那么最好的解决方法是什么?
借助JSF 2.2中的Omnifaces和o:importConstants
,这没问题,即使在复合组件中,也可以在任何地方使用它。
先谢谢了:)
答案 0 :(得分:0)
由于<f:importConstants>
必须是<f:metadata>
的子代(又必须是<f:view>
的子代),因此它必须使用与official documentation中所述的相同合成模式:
The implementation must allow templating for this element according
to the following pattern.
template client XHTML view, view01.xhtml
<ui:composition template="template.xhtml">
<ui:define name="metadata">
<f:metadata>
<f:viewParam name="id"/>
</f:metadata>
</ui:define>
<ui:define name="content">
<h1>The big news stories of the day</h1>
</ui:define>
</ui:composition>
Note line 4. The page author must ensure that the <f:metadata> element does not
appear on a template or included page. It must reside on the root page that
corresponds to the viewId.
The template page, template.xhtml
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xml:lang="en" lang="en">
<body>
<f:view>
<ui:insert name="metadata"/>
<div id="container">
<ui:insert name="content"/>
</div>
</f:view>
</body>
</html>