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

sat*_*esh 3 validation ajax jsf

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

Bal*_*usC 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"));
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

(请注意,它是一个@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" />
Run Code Online (Sandbox Code Playgroud)