Jåc*_*cob 1 jsf selectonemenu valuechangelistener
在我的页面中,我有 selectonemenu,我注意到当我单击数据表的分页时,将调用 valueChangeListener 方法,而无需实际更改 selectonemenu 中的值或选项。
这是如何发生的以及如何防止这种情况发生,因为仅当用户更改 selectonemenu 中的值时我才需要调用 valueChangeListener 方法。
感谢并感谢任何帮助。
问候
这是我的 selectonemenu 代码
更新1
<ice:selectOneMenu value="#{list.selectedItem}"
partialSubmit="true" valueChangeListener="#{list.val}">
<f:selectItems value="#{list.selectItems}" />
</ice:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
和豆法
public void val(ValueChangeEvent event) {
logger.info("1");
selectedValue = event.getNewValue().toString();
}
Run Code Online (Sandbox Code Playgroud)
值的添加方式如下
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"));
}
Run Code Online (Sandbox Code Playgroud)
方法调用如下
public List<SelectItem> getSelectItems() {
if (selectItems == null) {
loadItems;
}
return selectItems;
}
Run Code Online (Sandbox Code Playgroud)
JSF与客户端事件valueChangeListener没有任何关系。它是一个服务器端事件,当提交的值与初始值不同时将调用该事件。
列表中第一项的值为1,因此当用户不更改下拉列表时,提交的值为1。如果您不想valueChangeListener调用 ,则需要确保初始值也等于1。这就是背后的价值#{list.selectedItem}"。在 bean 构建/初始化期间将其初始化为与第一项相同的值。
this.selectedItem = "1";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5007 次 |
| 最近记录: |