我在JSF页面中有一个输入字段,如下所示(映射到支持bean上的BigDecimal)
<h:inputText disabled="#{volumeBean.grossVolumeDisabled}" id="grossVolume" size="10" validateOnExit="true" value="#{volumeBean.enteredGrossVolume}" >
<a4j:support ajaxSingle="true" event="onblur" ignoreDupResponses="true" oncomplete="checkFieldValidation(this)" onsubmit="updateDirty()"/>
</h:inputText>
一个a4j:commandButton来“刷新”页面上数据库中的所有数据:
<a4j:commandButton accesskey="T" action="#{volumeBean.revert}" button-type="ajax" disabled="#{volumeBean.revertDisabled}" id="volumeBean_reset" immediate="true" reRender="volumesTable" value="#{msg.button_RESET}"/>
以下是重现我的问题的步骤: 请注意,无论是否在a4j:support
上设置了reRender属性,都会发生错误以下是重现的步骤 - 只是为了进一步澄清:
答案 0 :(得分:0)
当您执行重置时,会触发Ajax请求,提交整个表单并再次出现验证错误。所以该字段仍然具有旧的(不正确的)值。
答案 1 :(得分:0)
尝试将参数ajaxSingle="true"
添加到按钮。我发现immediate="true"
不足以绕过对ajax组件的验证。