如果根据数据库提供输入的用户名,如何在输入文本字段中验证输入的用户名?我正在使用JSF2。
答案 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" />