1

我将混合客户端验证 (CSV) 与 JSR-303 bean 验证约束和 ajax-fallback 验证用于 h:inputText 标记。

但是,如果 CSV 通过并且 ajax 回退验证失败,则会导致验证消息闪烁。我认为这是因为首先客户端删除了消息,后来的 ajax 调用再次添加了消息。如果验证是由触发的,这尤其令人讨厌<rich:validator event="keyup" />.

如果只实现一种类型的验证,那么消息会很好地显示而不会闪烁。

我猜这是一个ajax排队问题,但<a4j:queue ignoreDupResponses="true"/>没有解决问题。

有任何想法吗?谢谢。


详细地:

对于客户端验证,我添加了注释

@Pattern(regexp = "^[\\w\\-]([\\.\\w])+[\\w]+@([\\w\\-]+\\.)+[a-zA-Z]{2,4}$", message = "Bad email")
private String email; 

在验证 bean 中。

对于 ajax 后备(服务器端)部分,我添加了 bean 方法

public void validateEmail(FacesContext context, UIComponent toValidate, Object value) {

   ... // Check if email is already taken 

}

标签看起来像

<h:inputText  id="registerFullname" value="#{registerPanelBean.email}" validator="#{registerPanelBean.validateEmail}">
   <rich:validator event="keyup"  />
</h:inputText>
<rich:message for="registerFullname">
</rich:message>
4

0 回答 0