Как проверить наличие имени пользователя в базе данных? - PullRequest
3 голосов
/ 23 декабря 2011

Как я могу проверить введенное имя пользователя в поле ввода текста, если оно доступно в соответствии с базой данных?Я использую JSF2.

1 Ответ

5 голосов
/ 23 декабря 2011

Просто внедрите 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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...