вопрос по валидации дизайна с использованием фреймворка JSF - PullRequest
1 голос
/ 09 августа 2011

При проектировании программного обеспечения, что лучше всего: проверка уникального ввода (например, имени пользователя) в БД с использованием JSF Validator или с использованием Controller (managed-bean).

Очевидно, в JSF-средеЯ не могу использовать @EJB в Валидаторе, поэтому в случае, если я использую Валидатор для проверок, мне придется подключаться к БД другим способом (соединение jdbc или что-то в этом роде).В случае, если я проверю это в Контроллере, мне нужно будет добавить некоторую логику, которая не является необходимой частью процесса (например, метод createUser).

Итак, каков наилучший способ в соответствии сРамки JSF?

1 Ответ

3 голосов
/ 09 августа 2011

Очевидно, что в среде JSF я не могу использовать @EJB в Валидаторе, поэтому в случае, если я использую Валидатор для проверок, мне придется подключаться к БД другим способом (соединение jdbc или что-то).

Это верно. Обычный обходной путь для этого - объявить и использовать валидатор как @ManagedBean.

1012 * Е.Г. *

@ManagedBean
@RequestScoped // Can be @ApplicationScoped if it does not hold any state.
public class UsernameValidator implements Validator {

    @EJB
    private UserService userService;

    // ...
}

с

<h:inputText validator="#{usernameValidator.validate}" />

или

<h:inputText>
    <f:validator binding="#{usernameValidator}" />
</h:inputText>
...