2011-12-23 4 views
3

入力テキストフィールドに入力されたユーザー名が、データベースに基づいて利用可能であれば、どのように検証されますか?私はJSF2を使用しています。データベース内のユーザー名の可用性を検証する方法は?

+0

「空き状況を確認する」とはどういう意味ですか? –

+0

こんにちは、私は、ユーザー名が誰に割り当てられているかどうかにかかわらず、テキストボックスの指定されたユーザー名とデータベースを照合したいと思います。 – sateesh

答えて

5

自分でValidatorを実装するだけです。

@ManagedBean 
@RequestScoped 
public class UserNameAvailableValidator implements Validator { 

    @EJB 
    private UserService userService; 

    @Override 
    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { 
     String userName = (String) value; 

     if (!userService.isUsernameAvailable(userName)) { 
      throw new ValidatorException(new FacesMessage("Username not avaliable")); 
     } 
    } 

} 

(それが理由@EJBを注入する必要があるの@ManagedBean代わりに@FacesValidatorだということに注意してください、あなたはEJBを使用していない場合、あなたはそれの代わりに@FacesValidator作ることができます)

それを使用します

<h:inputText id="username" value="#{register.user.name}" required="true"> 
    <f:validator binding="#{userNameAvailableValidator}" /> 
    <f:ajax event="blur" render="username_message" /> 
</h:inputText> 
<h:message id="username_message" for="username" /> 
関連する問題