在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>
答案 0 :(得分:2)
使用Omnifaces实用程序库进行此操作。它有'Ajax' functionality来更新数据表的行,甚至还有一个特定的PrimeFaces示例。
它的工作原理如下:
Ajax.updateRow(table, index);
其中table是对组件的引用(不是id!,而是通过绑定),index是行索引。