templates - 根据模板客户端隐藏模板的特定部分

标签 templates jsf facelets

我在 Facelet 模板中定义了页眉、正文和页脚。我想在我的登录页面中隐藏页眉和页脚。我怎样才能做到这一点?

最佳答案

其中一种方法是根据 current view ID 有条件地渲染它们.

<h:panelGroup id="header" layout="block" rendered="#{view.viewId != '/login.xhtml'}">
    Header.
</h:panelGroup>

<div id="body">
    <ui:insert name="body">Body.</ui:insert>
</div>

<h:panelGroup id="footer" layout="block" rendered="#{view.viewId != '/login.xhtml'}">
    Footer.
</h:panelGroup>

另一种方法是使用 <ui:param> 对其进行参数化:

<h:panelGroup id="header" layout="block" rendered="#{not hideHeaderAndFooter}">
    Header.
</h:panelGroup>

<div id="body">
    <ui:insert name="body">Body.</ui:insert>
</div>

<h:panelGroup id="footer" layout="block" rendered="#{not hideHeaderAndFooter}">
    Footer.
</h:panelGroup>

然后在/login.xhtml的模板客户端中:

<ui:composition template="/WEB-INF/templates/layout.xhtml" ...>
    <ui:param name="hideHeaderAndFooter" value="true" />
    <ui:define name="body">
        ...
    </ui:define>
</ui:composition>

关于templates - 根据模板客户端隐藏模板的特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15667186/

相关文章:

C++11 可变参数模板函数——错误在哪里?

c++ - 为什么 boost::call_traits<T>::param_type 是枚举类型的引用?

java - 将 JSF 理解为 MVC 框架

spring - 如果使用 Spring 而不使用 EJB,Glassfish 是否有点矫枉过正?

css - 如何在 CSS 选择器中使用 JSF 生成的带有冒号 ":"的 HTML 元素 ID?

jsf - 在 View 中使用复合组件两次在 JSF 中重复组件 ID

c++ - 全局函数和非静态成员函数指针设计

c++ - 对未知边界数组的引用 (C++)

java - 我应该重写 Enum.toString() 来本地化枚举的标签吗?

jsf - h :commandButton inside h:dataTable