【发布时间】:2011-03-09 17:48:51
【问题描述】:
大家好,
我正在尝试在我的 Seam 应用程序中设置一些验证,并且它可以正常工作,但它有一些我想避免的副作用。我在输入表单上设置了如下字段:
<label for="displayName" class="required">Display Name:</label>
<s:decorate id="displayNameDecorate" styleClass="errorwrapper">
<h:inputText id="displayName" value="#{presenceHome.instance.displayName}" required="true">
<a4j:support event="onblur" reRender="displayNameDecorate" ajaxSingle="true"/>
</h:inputText>
<a4j:outputPanel ajaxRendered="true">
<h:message for="displayName" styleClass="errormessage"/>
</a4j:outputPanel>
</s:decorate>
这个方法很好用。如果我输入的值被认为对显示名称无效,则会显示验证错误。我遇到的麻烦是输入的值何时有效。当我选中该字段时,a4j:support 会触发,导致数据被验证(通过),然后持久化。现在,如果在进入下一个字段后我决定不想编辑此记录,我无法取消,恢复我的更改 - 我的更改已经保存到数据库中。
无论如何我可以关闭 AJAX 验证但不会发生任何持久性吗?还是我只需要忘记 ajax 验证并在表单提交时触发它。
【问题讨论】: