【问题标题】:Is there a way to execute an action in datatable on each row loading?有没有办法在每行加载时在数据表中执行操作?
【发布时间】:2014-12-04 18:22:47
【问题描述】:

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

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

那么,有什么想法,如何做到这一点?

【问题讨论】:

    标签: jsf primefaces datatable


    【解决方案1】:

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

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

    【讨论】:

      【解决方案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>
      

      &lt;f:event/&gt; 标记将在每次将aText 呈现到页面时执行bean.execute(读取:对于每一行)。


      注意:您应该知道,上面的示例将执行 每次 表中的行正在呈现:首次页面访问、ajax 更新和页面刷新

      【讨论】:

      • 感谢您的回复,@kolossus!你喜欢我制作一个不可见的列并添加一个 标记的想法。 Tahks 很多,再次!
      猜你喜欢
      • 2012-10-23
      • 1970-01-01
      • 2019-09-07
      • 2013-10-10
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多