扩展JSF多级模板中特定部分的最佳方法

问题描述 投票:0回答:1

我有一个多层JSF模板,例如layout.xhtml,它从下面描述的模板数量开始扩展。

layout.xhtml-> level3.xhtml-> level2.xhtml-> level1.xhtml

如何扩展level1.xhtml添加一个额外的facelets(我想总体上增加2个facelets),例如customer-data.xhtmlsupplier-data.xhtml)继承自level1.xhtml代替navigation-module,并且也具有layout.xhtml的所有方面?

下面是我的template / level1.xhtml

<ui:composition
        xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:ui="http://java.sun.com/jsf/facelets">

            <ui:insert name="navigation-module" />
            <ui:insert name="time-module" />

</ui:composition>

我想获得通用模板,即layout.xhtml,但我没有获得如何做的方法。

jsf primefaces
1个回答
1
投票

我相信您想为导航模块添加两个页面。非常简单,只需执行以下操作

<ui:composition
        template=template/layout.xhtml
        xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:ui="http://java.sun.com/jsf/facelets">

<ui:define name="navigation-module">
            <ui:insert name="WEB-INF/customer-data.xhtml" />
            <ui:insert name="WEB-INF/supplier-data.xhtml" />
</ui:define>

只要您提供正确的ui:insert名称,即在您的情况下为navigation-module,并且在ui:define中告诉JSF,请在导航模块的位置插入这些页面。这里要注意的两个要点是

  1. 请确保您提及模板名称,即您可以在ui:composition标签之后立即看到模板名称,即template / layout.xhtml(原因是您需要所有模板功能)
  2. 使用您要在ui:define中覆盖的确切名称,即在您的情况下为导航模块

我希望我对你很清楚。如果您需要进一步说明,请随时发表评论。

© www.soinside.com 2019 - 2024. All rights reserved.