如何验证数据库中用户名的可用性?

时间:2011-12-23 05:17:12

标签: ajax validation jsf

如果根据数据库提供输入的用户名,如何在输入文本字段中验证输入的用户名?我正在使用JSF2。

1 个答案:

答案 0 :(得分: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"));
        }
    }

}

(请注意,它是@ManagedBean而非@FacesValidator,因为需要注入@EJB;如果您不使用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" />