【发布时间】:2012-05-07 13:40:12
【问题描述】:
我的 ajax 更新有问题。我想从 SelectOneMenu 组件中选择一个排序选项,但始终使用最后一个非当前选项进行 ajax 调用。 这是使用的代码 sn-p,更新组件是一个 LazyDataModel,我想对它的数据进行排序。我是 jsf 和 primefaces 的新手,希望我足够清楚。
<p:selectOneMenu id="selectSortDirection" value="#{notificationListView.sortDirection}">
<f:selectItems value="#{notificationListView.sortDirections}" var="currItem"
itemLabel="#{currItem.label}" itemValue="#{currItem.value}" />
<p:ajax event="change" update="notificationListDataTable" />
</p:selectOneMenu>
【问题讨论】:
-
你的 notificationListDataTable 是否依赖 #{notificationListView.sortDirection}" ?也看看这个primefaces.org/showcase/ui/pprSelect.jsf
-
是的,它使用 sortDirection 作为排序顺序。基本上我必须设置 ASC 和 DESC 的值,当我在后端选择一个时,会使用另一个。编辑:它与 primefaces 的用例不同,如果 sortDirection 为 null 则设置为默认值
-
在您的代码中添加一些打印输出以查看延迟发生的位置...
-
我检查了该字段的设置器,并且我使用了一个侦听器来查看它是否再次调用设置器但它没有,在设置器方法上,值是旧的......所以我猜这是一个 ajax 错误(也许我需要使用另一个属性)。
-
如果你向 ajax 添加一个监听器,在监听器方法中你会看到 notificationListView.sortDirection 的正确值吗?并在您的侦听器方法之后调用 notificationListView.sortDirection 的 getter 吗?
标签: ajax jsf primefaces