SelectOneMenu Ajax更新仍落后一步

SelectOneMenu Ajax更新仍落后一步,ajax,jsf,primefaces,Ajax,Jsf,Primefaces,我的ajax更新有问题。我想从SelectOneMenu组件中选择一个排序选项,但ajax调用总是在最后一个非当前选项被选中的情况下进行。 这是使用的代码片段,更新组件是一个LazyDataModel,我想对其数据进行排序。我不熟悉jsf和primefaces,希望我足够清楚 <p:selectOneMenu id="selectSortDirection" value="#{notificationListView.sortDirection}">

我的ajax更新有问题。我想从SelectOneMenu组件中选择一个排序选项,但ajax调用总是在最后一个非当前选项被选中的情况下进行。 这是使用的代码片段,更新组件是一个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>

检查以下各项:


如果将侦听器添加到ajax,则在侦听器方法中可以看到notificationListView.sortDirection的正确值?notificationListView.sortDirection的getter是否在侦听器方法之后调用

检查以下各项:


如果将侦听器添加到ajax,则在侦听器方法中可以看到notificationListView.sortDirection的正确值?notificationListView.sortDirection的getter是否在侦听器方法之后调用

notificationListDataTable是否依赖于{notificationListView.sortDirection}?再看看这个是的,它使用sortDirection作为排序顺序。基本上,我必须使用值ASC和DESC,当我在后端选择一个时,使用另一个。编辑:它与primefaces中的用例不同,如果sortDirection为null,它将设置为默认值在代码中添加一些打印输出以查看延迟发生的位置…我检查了该字段的setter,还使用了一个侦听器查看它是否再次调用setter,但它没有,在setter方法中,该值是旧值。。。所以我想这是一个ajax错误,也许我需要使用另一个属性。如果您向ajax添加一个侦听器,在侦听器方法中,您会看到notificationListView.sortDirection的正确值?notificationListView.sortDirection的getter是否在侦听器方法之后调用?notificationListDataTable是否依赖于{notificationListView.sortDirection}?再看看这个是的,它使用sortDirection作为排序顺序。基本上,我必须使用值ASC和DESC,当我在后端选择一个时,使用另一个。编辑:它与primefaces中的用例不同,如果sortDirection为null,它将设置为默认值在代码中添加一些打印输出以查看延迟发生的位置…我检查了该字段的setter,还使用了一个侦听器查看它是否再次调用setter,但它没有,在setter方法中,该值是旧值。。。所以我想这是一个ajax错误,也许我需要使用另一个属性。如果您向ajax添加一个侦听器,在侦听器方法中,您会看到notificationListView.sortDirection的正确值?notificationListView.sortDirection的getter是否在侦听器方法之后调用?