我在该数据表的列中有一个primefaces数据表和2个panelgrid。第二个panelgrid可以正常工作,但是我只需要渲染一次即可。我在下面添加了我的代码。每个var如何渲染第一个panelgrid一次?
<p:dataTable value="#{bean.list}" var="var">
<p:column style="width: 60px;" groupRow="true">
<!--data-->
</p:column>
<p:column>
<p:panelGrid columns="4">
<!--data-->
</p:panelGrid>
<p:panelGrid columns="4" rendered="#{!rendered}">
<!--data-->
</p:panelGrid>
</p:column>
</p:dataTable>
答案 0 :(得分:1)
分解您的问题并概括。您的标题,例如已经以两种方式(或三种方式)过于具体了。
如何使用JSF和Primefaces在数据表中一次渲染面板网格?
“单一时间”不够具体,就像我试图在评论中弄清楚一样。您实际上想根据行号或索引来呈现(或不呈现)它。
因此更好的标题(和问题)应该是:
如何在p:datatable的第一行中呈现组件
但是...
要有条件地渲染组件,您已经知道需要使用rendered
属性。 conditionally displaying JSF components的问题已经存在。
如果您知道需要某种行号或索引(在JSF或p:datatable
中),则可以在搜索引擎中创建要搜索的行号或索引,而您会发现{{3 }},显示rowIndexVar
属性的存在。除此之外,甚至在此之前,仅在IDE中使用代码完成功能或使用PrimeFaces文档也将指示rowIndexVar
属性的存在。
将所有这些结合起来并不会太困难,并且会为您提供以下工作代码:
<p:dataTable value="#{bean.list}" var="var" rowIndexVar="index">
<p:column style="width: 60px;" groupRow="true">
<!--data-->
</p:column>
<p:column>
<p:panelGrid columns="4" rendered="#{index == 0}>
<!--data-->
</p:panelGrid>
<p:panelGrid columns="4" rendered="#{!rendered}">
<!--data-->
</p:panelGrid>
</p:column>
</p:dataTable>
因此概括,简化,rtfm ...它总是有帮助...