【问题标题】:SelectOneMenu changes its value only after the refreshSelectOneMenu 仅在刷新后更改其值
【发布时间】:2011-03-09 23:07:17
【问题描述】:

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

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

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

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

我认为 JSF 使用了类似缓存的东西。

如何重置SelectOneMenu 控件?

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

谢谢!

【问题讨论】:

  • @BalusC JSF 1.x 和会话范围的 bean。

标签: java jsf


【解决方案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}">

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    相关资源
    最近更新 更多