我在这里使用单选按钮的ValueChangeListener有点问题。 我使用Apache Tomcat 7.0和JSF 1.2。
* t tomahawk
<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?
我做错了什么?
答案 0 :(得分:0)
我认为它与 testBean 的范围有关。如果您没有明确指定,那么默认情况下它是无状态。重新加载页面时,您将创建另一个testBean对象,因此 radioItem 变量的先前值不再存在。将范围更改为 SESSION 可能会帮助您保持复选框状态,直到您退出为止。
答案 1 :(得分: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);