java - 如何使用 JSF 和 Primefaces 在数据表中一次渲染面板网格?
问题描述
我在这个数据表的一列中有一个 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>
解决方案
分解你的问题并概括它。您的标题例如已经在两种(或三种)方面过于具体。
如何使用 JSF 和 Primefaces 在数据表中一次渲染面板网格?
- “面板网格”可以更改为“组件”
- “一次”可以更改为“有条件地”
而且“单次”还不够具体,就像我在评论中试图澄清的那样。您实际上希望根据行号或索引来呈现(或不呈现)它。
所以更好的标题(和问题)应该是:
如何在 ap:datatable 的第一行中呈现组件
但...
为了有条件地渲染一个组件,你已经知道你需要使用rendered
属性。并且已经存在有条件地显示 JSF 组件的问题。
如果您知道您需要行号或索引(在 JSF 或 a 中p:datatable
),您可以在搜索引擎中创建一个搜索,您会发现Display p:dataTable Row Numbers显示存在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 ......它总是有帮助......