【问题标题】:SelectOneMenu Ajax Update remains one step behindSelectOneMenu Ajax 更新仍然落后一步
【发布时间】: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


【解决方案1】:

检查以下内容:

如果您向 ajax 添加侦听器,在 listener 方法中您会看到 notificationListView.sortDirection 的正确值吗? notificationListView.sortDirection 的 getter 是否在您的侦听器方法之后调用?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-09
    • 2017-07-15
    • 2021-05-01
    • 2020-03-26
    • 2014-11-20
    • 1970-01-01
    • 2016-07-23
    • 2015-11-05
    相关资源
    最近更新 更多