Jsp h:valueChangeListener被调用两次

Jsp h:valueChangeListener被调用两次,jsp,jsf,richfaces,listener,onchange,Jsp,Jsf,Richfaces,Listener,Onchange,以下是我的JSP代码: (...) <h:selectBooleanCheckbox value="#{MyMB.booleanValue}" valueChangeListener="#{MyMB.myListenerMethod}"> <a4j:support ajaxSingle="true" event="onchange"/> </h:selectBooleanCheckbox> (...) <a4j:commandLi

以下是我的JSP代码:

(...)
<h:selectBooleanCheckbox value="#{MyMB.booleanValue}"
        valueChangeListener="#{MyMB.myListenerMethod}">
    <a4j:support ajaxSingle="true" event="onchange"/>
</h:selectBooleanCheckbox>
(...)
<a4j:commandLink value="CONTINUE"
        Title="Continue" alt="Continue" action="#{MyMB.btnContinue}" />
(...)
(…)
(...)
(...)

问题是:当我单击复选框时,
MyMB.myListenerMethod
被调用,我将
My.booleanValue
的值更改为
event.getNewValue()

它对两个都有效,勾选和取消勾选

但是,当我单击
commandLink
调用
MyMB.btnContinue
时,在此之前会再次调用
MyMB.myListenerMethod
。总是使用错误的值


我遗漏了什么?

您的MB的范围是什么。你能粘贴MB代码吗。如果在commandLink中的方法执行时总是得到假值,这意味着组件值在模型中没有更新。如果需要该值,可以在bean中为该组件创建组件绑定,并使用component.getSubmittedValue()获取用户为复选框选择的值。问题是:当我单击复选框时,会调用MyMB.myListenerMethod,并且我将My.booleanValue的值更改为event.getNewValue()。------>我认为您不需要在bean中的valueChangeListener中显式更改值。你可以在ValueChangeListener中跳过这件事。如果验证没有失败,JSF将自动完成。在你没有渲染任何东西的情况下,它的用途是什么?