【问题标题】:How to render a panelgrid one single time in datatable with JSF and Primefaces?如何使用 JSF 和 Primefaces 在数据表中一次渲染面板网格?
【发布时间】:2019-02-15 16:44:19
【问题描述】:

我在这个数据表的一列中有一个 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>

【问题讨论】:

标签: java jsf primefaces


【解决方案1】:

分解你的问题并概括它。你的头衔已经在两个(或三个)方面过于具体。

如何使用 JSF 和 Primefaces 在数据表中一次渲染面板网格?

  • “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...它总是有帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多