Java JSF 1.2单选按钮值ChangeListener值未保存

Java JSF 1.2单选按钮值ChangeListener值未保存,java,jsf-1.2,valuechangelistener,Java,Jsf 1.2,Valuechangelistener,我对这里单选按钮的ValueChangeListener有点问题。 我将ApacheTomcat7.0与JSF1.2结合使用 *t战斧 <t:selectOneRadio id="testRadio" onchange="submit()" value="#{testBean.radioItem}"> <f:selectItems value="#{testBean.radioItems}" /> <f:valueChangeListener type="p

我对这里单选按钮的ValueChangeListener有点问题。 我将ApacheTomcat7.0与JSF1.2结合使用

*t战斧

<t:selectOneRadio id="testRadio" onchange="submit()" value="#{testBean.radioItem}">
  <f:selectItems value="#{testBean.radioItems}" />
  <f:valueChangeListener type="packe.path.testBean" />
</t:selectOneRadio>
好吧,问题是:如果我更改单选按钮的值,我希望我的ValueChangeListener被解雇。在侦听器中,我想将bean中的另一个属性(ceil)设置为false,以便取消选中我的复选框。 在调试模式下,我检查了单选按钮的侦听器是否被触发。是的

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


我做错了什么?

我认为这与您的测试bean的范围有关。如果没有显式分配,那么默认情况下它是无状态的。重新加载页面时,创建另一个testBean对象,以便不再存在radioItem变量的先前值。将作用域更改为会话可能会帮助您在注销前保持复选框状态。

似乎可以这样做:

context.renderResponse();

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

root.setViewId(viewId);
context.setViewRoot(root);

我的bean已经是会话作用域。顺便说一句,我认为它与应用程序的生命周期有关,但我不知道要改变什么。
context.renderResponse();

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

root.setViewId(viewId);
context.setViewRoot(root);