2011-03-09 66 views
0

我在我的JSF页面上使用了一个SelectOneMenu组件和一个SelectBooleanCheckbox组件。SelectOneMenu仅在更新后更改其值

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

现在我已经实现了组合框的值更改侦听器,并且阻止SelectOneMenu工作得很好。

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

我认为这有点像JSF使用的缓存。

如何重置SelectOneMenu控件?

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

谢谢!

+0

JSF 1.x or 2.x? – BalusC 2011-03-09 14:59:01

+0

@BalusC JSF 1.x和会话范围的bean。 – leshkin 2011-03-09 15:01:58

回答

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}"> 
+0

非常感谢! – leshkin 2011-03-10 08:47:32