如何在复合组件中使用f:importConstants?

时间:2019-02-07 14:13:52

标签: jsf jsf-2.3

在复合组件中使用f:importConstants的最佳方法是什么? 您无法将f:metadata放在此处,那么最好的解决方法是什么? 借助JSF 2.2中的Omnifaces和o:importConstants,这没问题,即使在复合组件中,也可以在任何地方使用它。

先谢谢了:)

1 个答案:

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