我在数据表中遇到问题。所有列都在标题上有sortBy,除了最后一个具有TieredMenu并且每个MenuItem使用item作为参数调用支持bean。 Datatable加载了一个按一个字段排序的List,我没有使用DataModel。
问题在于,在按任何字段排序后,作为参数传递的项目是初始而不是实际。
例如:
最初列表按第三个字段排序:
gomez 5 4
alvarez 3 5
carballo 3 8
按第一个字段排序后:
alvarez 3 5
carballo 3 8
gomez 5 4
如果我点击第一行,我会得到gomez而不是alvarez。
这是数据表的代码:
<p:dataTable scrollable="true" scrollHeight="290"
value="#{bb.list}"
id="tablaEnAtencion" var="item" width="100%" rows="10000"
sortBy="#{item.third}" sortOrder="descending"
filteredValue="#{bb.listFiltered}">
...
<p:column style="text-align:center;" width="24">
<p:commandButton id="dynaButtonAtencion" icon="ui-icon-gear" type="button" style="width:100%;" />
...
<p:tieredMenu overlay="true" trigger="dynaButtonAtencion" my="left top" at="left bottom" style="width:170px">
<p:menuitem value="action" actionListener="#{bb.act1(item)}" />
</p:tieredMenu>
</p:column>
</p:dataTable>
在项目中我有很多DataTable,这个问题只发生在这个表上。 我试过了: - 删除某些列的排序 - 添加没有监听器的排序事件 - 使用排序侦听器添加排序事件,并按列表的代码顺序添加此方法顺序 - 删除过滤器 - 使用f:setPropertyActionListener将值发送到bb
Backing bean是ViewScoped。 Primefaces 3.4,面对2.1.13。