JSR-303 Bean 検証制約と h:inputText タグの ajax フォールバック検証を組み合わせたクライアント側検証 (CSV) を使用しています。
ただし、CSV が合格し、ajax フォールバック検証が失敗した場合、検証メッセージがちらつきます。これは、最初にクライアント側がメッセージを削除し、その後の ajax 呼び出しでメッセージが再度追加されるためだと思います。これは、検証がトリガーされた場合に特に厄介です。<rich:validator event="keyup" />.
1 種類の検証のみが実装されている場合、メッセージはちらつきなく表示されます。
これは 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>