0

ユーザーの電子メールが無効であると思われる場合は警告しますが、必要に応じてユーザーが電子メールを送信できるようにします。私が読んだように、確認メッセージを送信する以外に電子メールを検証する簡単な方法はありませんが、Gmailの後に「.com」を付けるのを忘れているという愚かな間違いについて彼に警告したいと思います。

私はJSFを使用していますが、コードは次のようになります。

XHTML

<h:inputText id="email" 
    required="true" requiredMessage="Required field" 
    value="#{signupBean.email}">
 <f:ajax 
      event="valueChange" 
      listener="#{signupBean.validateEmail}"/>
</h:inputText>
<h:message for="email"/>

SignupBean

public void validateEmail(AjaxBehaviorEvent event){
    if (email != null && !email.matches(emailRegex)){
        String id = event.getComponent().getClientId();
        FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Your e-mail seems invalid", "Did you miss the '@' or '.com'?");
        FacesContext.getCurrentInstance().addMessage(id, msg);
    }
}

そのままでは、メッセージは失われ、警告ログとして表示されます。id表示されるのはですがj_id_f:email、としてハードコーディングすると機能しませんemail。また、actionの代わりにを使ってみましlistenerたが、メソッドが呼び出されません!

それが進むべき道であるか、またはJSFだけでそのような「弱い」検証を行う方法があるかどうか、私はいくつかのアドバイスが欲しいです。私は純粋なJSFを使用していますが、拡張機能の使用を検討します。

4

1 に答える 1

2

on complete of ajaxリクエストを更新するのを忘れた<h:message>ため、JSFはUIにメッセージを表示する機会がありませんでした。

それに応じて修正します。

<f:ajax ... render="m_email" />
...
<h:message id="m_email" ... />
于 2012-10-10T16:12:07.717 に答える