我正在使用primefaces数据表,它同时包含用于行选择的过滤器和单选按钮。
<p:dataTable id="dtId" var="bVar" widgetVar="dtWVar"
value="#{bBean.myList}" filteredValue="#{bBean.bfilter}"
rowKey="#{bVar.Id}" selection="#{bBean.selectedObj}">
<p:ajax event="filter" listener="#{bBean.onFilter()}" />
<p:ajax event="rowSelectRadio"
actionListener="#{bBean.onSelectRadio()}" />
<p:column selectionMode="single" headerText="RadioColHeader">
选择单选按钮时,值将在selectedObj
中设置,但在使用数据表过滤器后它将停止工作。单选按钮被选中,但所选对象未在selectedObj
中设置。
请建议一种方法,即使在触发过滤器事件后,也可以将选定的行值输入选择对象。
答案 0 :(得分:1)
在ajax过滤器事件中调用process="@this"
然后通过远程命令更新数据表时修复了此问题,如下所示:
Ajax事件 - 在数据表中
<p:ajax event="filter" process="@this" listener="#{bBean.onFilter()}" oncomplete="updateDataTable();" />
远程命令 - 在数据表之外
<p:remoteCommand name="updateDataTable" update="dtId" />