有没有办法在每行加载的数据表中执行一个动作?

时间:2014-10-09 17:52:26

标签: jsf primefaces datatable

我正在使用JSF页面,使用primefaces,并且我遇到了一个问题:每次在数据表中加载新行时,我都需要执行一个操作。

简而言之,例如,每个实体,曾经连续显示的数据,都有一个对象集合,我需要将它们分成两个集合。

那么,任何想法,怎么做?

2 个答案:

答案 0 :(得分:2)

没有什么特别需要做的。您可以将列内容的每个定义作为行内容的定义。采取以下示例

  <p:dataTable var="car" value="#{dtBasicView.cars}">
     <p:column headerText="Id">
         <h:outputText id="aText" value="#{car.id}">
            <f:event name="preRenderComponent" listener="#{bean.execute}"/>
         </h:outputText>
     </p:column>

     <p:column headerText="Year">
          <h:outputText value="#{car.year}" />
     </p:column>

      <p:column headerText="Brand">
          <h:outputText value="#{car.brand}" />
      </p:column>

      <p:column headerText="Color">
          <h:outputText value="#{car.color}" />
      </p:column>
 </p:dataTable>
每次<f:event/>呈现给页面时,bean.execute标记都会执行aText(读取:每行)。


注意:您应该知道上面的示例将在表格中执行每次行:第一次页面访问,ajax更新和页面刷新

答案 1 :(得分:1)

在@kolossus的帮助下,解决这个问题:

<p:dataTable ...>
    <p:column style="display: none;">
        <f:event type="preRenderComponent" listener="..."/>
    </p:column>
</p:datatable>