我正在使用PrimeFaces开发一个JSF应用程序,我计划主要使用tabViews(多个)。为了让您大致了解应用程序的工作方式,我有一个侧边菜单,用户可以从中选择“模块”,它将在中心布局中显示为选项卡。看到我有多个“模块”,将来会有更多,我决定使用的解决方案是为xhtml中的所有选项卡编写代码,然后使用呈现的属性(默认设置为false) )以显示它们(当用户点击相应的菜单时)。
现在我的问题是,将组件的呈现属性设置为false,等同于那个根本不存在的组件(对性能没有任何影响)?
答案 0 :(得分:1)
要像模板一样使用xhtml页面,请按照以下步骤操作
第1步:创建我的收录页
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
>
<h:form id="form">
...
</h:form>
</ui:composition>
假设此页面的名称为myTemplate.xhtml
第2步:每次需要时使用模板页面
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
template="/templates/templateCrb.xhtml"
xmlns:p="http://primefaces.org/ui"
>
<ui:define name="MyContent">
<ui:include src="/pages/.../myTemplate.xhtml">
</ui:include>
</ui:define>
</ui:composition>
在这种情况下我包含了一个完整的页面,但你可以在一个对话框中使用它,一个tabView,你也可以向你发送包含元素的参数。
您可以在more informations about include中阅读更多内容。
希望能帮到你。
答案 1 :(得分:1)
现在我的问题是,将组件的呈现属性设置为false,等同于那个根本不存在的组件(对性能没有任何影响)?
这不等同。如果设置了render = false,则组件仍在服务器端的组件树中。因此,它会花费一点点性能和内存。
当组件树更大时,Mojarra在过去也遇到了很大的性能问题:https://blog.oio.de/2013/05/16/jsf-performance-mojarra-improves-dramatically-with-latest-release/