0

我对这里的单选按钮的 ValueChangeListener 有一点问题。我将 Apache Tomcat 7.0 与 JSF 1.2 一起使用。

*t 战斧

<t:selectOneRadio id="testRadio" onchange="submit()" value="#{testBean.radioItem}">
  <f:selectItems value="#{testBean.radioItems}" />
  <f:valueChangeListener type="packe.path.testBean" />
</t:selectOneRadio>

还有我的豆子:

public class testBean implements ValueChangeListener, ActionListener, Serializable {

  // ...

  @Override
  public void processValueChange(ValueChangeEvent event) throws AbortProcessingException {
    this.data.clear();
    this.ceil = false; // ceil belongs to a checkbox
  }
}

好的,问题是:如果我更改单选按钮的值,我希望我的 ValueChangeListener 被触发。在侦听器中,我想将 bean 中的另一个属性(ceil)设置为 false,这样我的复选框就会被取消选中。在调试模式下,我检查了单选按钮的侦听器是否被触发。这是。

我现在遇到的问题是,如果我重新加载页面,那么复选框的值与以前相同 - 但我在侦听器中将其设置为 false?

我究竟做错了什么?

4

2 回答 2

0

似乎这样有效:

context.renderResponse();

ViewHandler handler = context.getApplication().getViewHandler();
String viewId = context.getViewRoot().getViewId();
UIViewRoot root = handler.createView(context, viewId);

root.setViewId(viewId);
context.setViewRoot(root);
于 2013-11-04T08:16:11.850 回答
0

我认为这与您的testBean的范围有关。如果您没有明确分配,那么默认情况下它是Stateless当您重新加载页面时,您将创建另一个 testBean 对象,因此radioItem变量的先前值不再存在。将范围更改为SESSION可能可以帮助您保持复选框状态,直到您注销。

于 2013-11-01T08:21:12.917 回答