在我的页面中,我有selectonemenu,我注意到当我单击datatable的分页时,将调用valueChangeListener方法而不实际更改selectonemenu中的值或选项。
如何发生这种情况以及如何防止这种情况发生,因为我只有在用户更改selectonemenu中的值时才需要调用valueChangeListener方法。
感谢并感谢任何帮助。
此致
这是我的selectonemenu代码
UPDATE1
<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;
}
答案 0 :(得分:4)
JSF valueChangeListener
绝不与客户端事件相关。这是一个服务器端事件,当提交的值与初始值不同时,将调用该事件。
列表的第一项的值为1
,因此当用户未更改下拉列表时,提交的值将为1
。如果您不希望调用valueChangeListener
,则需要确保初始值也等于1
。这是#{list.selectedItem}"
背后的价值。在bean的构造/初始化期间将其初始化为与第一项相同的值。
this.selectedItem = "1";