【问题标题】:valueChangeListener is invoked on submit without changing options in selectOneMenu提交时调用 valueChangeListener 而不更改 selectOneMenu 中的选项
【发布时间】:2011-06-23 09:35:39
【问题描述】:

在我的页面中,我有 selectonemenu,我注意到当我单击数据表的分页时,会调用 valueChangeListener 方法,而不会实际更改 selectonemenu 中的值或选项。

这是如何发生的,我该如何防止这种情况发生,因为只有当用户更改 selectonemenu 中的值时我才需要调用 valueChangeListener 方法。

感谢并感谢任何帮助。

问候

这是我的 selectonemenu 代码

更新1

<ice:selectOneMenu value="#{list.selectedItem}"
            partialSubmit="true" valueChangeListener="#{list.val}">
                <f:selectItems value="#{list.selectItems}" />
                </ice:selectOneMenu>

和bean方法

   public void val(ValueChangeEvent event) {
            logger.info("1");
            selectedValue = event.getNewValue().toString();
}

值的添加方式

public void loadItems(){
        selectItems.add(new SelectItem("1", "One"));
        selectItems.add(new SelectItem("2", "Two"));
        selectItems.add(new SelectItem("3", "Three"));
        selectItems.add(new SelectItem("4", "Four")); 

}

方法调用如下

 public List<SelectItem> getSelectItems() {
        if (selectItems == null) {
            loadItems;

        }
        return selectItems;
    }

【问题讨论】:

  • 请张贴代码。没有它就很难诊断

标签: jsf selectonemenu valuechangelistener


【解决方案1】:

JSF valueChangeListener绝不与客户端事件相关。它是一个服务器端事件,当 submitted 值与 initial 值不同时将被调用。

列表的第一项的值为1,因此当用户不更改下拉列表时,提交的值为1。如果不希望调用valueChangeListener,则需要确保初始值也等于1。这就是#{list.selectedItem}" 背后的价值。在 bean 的构造/初始化期间将其初始化为与第一项相同的值。

this.selectedItem = "1";

【讨论】:

  • 非常感谢 BalusC 的成功。那么这是在构造函数中初始化相同值的最佳做法还是存在其他更好的方法?
  • 我还有一个疑问,我可以看到提交时的值和初始值相同。在我开始使用分页导航之前加载页面时,下拉菜单是 1,当我单击分页时,提交的值也是 1。那么如何调用 valueChangeListener?但是就像你在我用 this.selectedItem="1"; 初始化时提到的那样。然后 valueChangeListener 不会被调用。对这种行为有点困惑。
  • 到底你需要valueChangeListener 方法来做什么呢?您似乎对值更改不感兴趣,而只对提交的值感兴趣。为此,您也可以在 bean 的操作方法中完成所需的工作。
  • 如果用户更改了 selectonemenu 中的选项,我正在使用 valueChangeListener 刷新数据表。最初数据表加载了默认值,该值与 selectonemenu 中的初始值相同。
  • 分页的action方法中也可以只获取当前选中的值。
猜你喜欢
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-01
  • 2015-05-04
  • 2015-03-04
  • 1970-01-01
相关资源
最近更新 更多