如何在Primefaces中刷新一行?

时间:2015-05-29 06:38:23

标签: jsf primefaces datatable

在Primefaces <p:dataTable>中,每行都有一个包含commandButton的列。 此commandButton更新与当前行对应的bean的值。

如何刷新我刚刚点击的当前行,以便读取器列刷新?

<p:dataTable id="repositoryBean" 
    currentPageReportTemplate="Total : {totalRecords}"
    lazy="true"
    resizableColumns="false"
    rows="200" 
    rowsPerPageTemplate="10,15,20"
    sortBy="#{row.name}"
    sortOrder="ascending"
    style="margin:20px 0px;"
    value="#{repositoryBean.users}"
    var="row"
    styleClass="small-datatable"
    editable="true"
   >
    <p:ajax event="rowSelect" listener="#{repositoryBean.onDisplay}"
        onstart="PF('loading').show()"
    /> 

    <p:column headerText="#{label.cvs_repo_user_firstname}" sortBy="#{row.firstname}" sortOrder="ascending">
        <h:outputText value="#{row.firstname}" />
    </p:column>
    <p:column headerText="#{label.cvs_repo_user_is_reader}" sortBy="#{row.reader}" sortOrder="ascending">
        <h:outputText value="#{row.reader}" />
    </p:column>

    <p:column headerText="#{label.cvs_repo_user_action}" style="text-align:center" >
        <p:commandButton
            value="Reader"
            styleClass="btn-off"
            action="#{repositoryBean.onSetReader(row)}"
            />
    </p:column>
</p:dataTable>

1 个答案:

答案 0 :(得分:2)

使用Omnifaces实用程序库进行此操作。它有'Ajax' functionality来更新数据表的行,甚至还有一个特定的PrimeFaces示例。

它的工作原理如下:

Ajax.updateRow(table, index);

其中table是对组件的引用(不是id!,而是通过绑定),index是行索引。