SelectOneMenu仅在刷新后更改其值

时间:2011-03-09 14:50:35

标签: java jsf

我在JSF页面上使用SelectOneMenu组件和SelectBooleanCheckbox组件。

如果选择了组合框,我的SelectOneMenu应该被阻止并设置为第一个元素(重置)。

现在我已经实现了组合框的值更改监听器,并且SelectOneMenu的阻塞效果非常好。

但是,当我重置ComboBox时,SelectOneMenu被设置为旧(前一个)元素。

我认为有一些类似JSF使用的缓存。

如何重置SelectOneMenu控件?

我已将value - 属性链接到bean属性。我在值更改侦听器中为此属性设置了一个值。

谢谢!

1 个答案:

答案 0 :(得分:1)

我假设您在复选框上使用immediate="true"并且您在值更改侦听器方法中调用FacesContext#renderResponse()(否则您会对验证感到厌烦)。

在这种情况下,您还需要将下拉组件本身的值设置为null

UIInput dropdown = (UIInput) facesContext.getViewRoot().findComponent("formid:dropdownid");
dropdown.setValue(null);

UIViewroot#findComponent()的替代方法是将其绑定为bean属性。

<h:selectOneMenu binding="#{bean.dropdown}">