我面临一个问题,在更改 rich:comboBox 值时,我需要调用支持 bean。所以我使用 valueChangeListener 和 a4j:support event="onchange" 如下:
<rich:comboBox value="#{myBean.name}" defaultLabel="#{messages['dropdown.defaultText']}" label="#{messages['label.name']}" status="defaultStatus" valueChangeListener="#{myBean.checkToChangeName}" disabled="#{myBean.isAdminUser}" >
<f:selectItems value="#{myBean.nameList}" />
<a4j:support event="onchange" reRender="errTable,popUpPanel" oncomplete="if(#{myBean.showPopup}) #{rich:component('popUpPanel')}.show();" />
</rich:comboBox>
支持bean方法:
public boolean checkToChangeName(ValueChangeEvent event){
// Code to check change is valid & its impact on other fields
}
方法 checkToChangeName() 应该只在更改事件时调用。但在我的情况下,这些方法在更改事件时被调用,并且在提交我不需要的表单时也被调用并造成麻烦。
我使用 h:commandButton 如下提交表单:
<h:commandButton id="btnSave" value="#{messages['action.save']}" action="#{myBean.updateProfile}" reRender="profileForm" />
谁能帮我理解为什么它在提交时调用 checkToChangeName() 方法?& 我该如何预防?