如何使用JSF和Primefaces在datatable中一次渲染一次panelgrid?

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

我在这个数据表的一列中有一个primefaces数据表和2个panelgrid。第二个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>
java jsf primefaces
1个回答
1
投票

分解你的问题并概括它。你的头衔,已经有两种方式(或三种方式)太具体了。

如何使用JSF和Primefaces在datatable中一次渲染一次panelgrid?

  • 'panelgrid'可以改成'组件'
  • '一次性'可以改为'有条件'

而“单身时间”并不具体,就像我在评论中试图明白一样。您实际上想要根据行号或索引呈现(或不呈现)。

所以更好的标题(和问题)应该是:

如何在p:datatable的第一行中渲染组件

但...

对于有条件地渲染组件,您已经知道需要使用rendered属性。而conditionally displaying JSF components的问题已经存在。

如果你知道你需要行号或索引(在JSF或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 ...总是有帮助...

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