2011-08-09 6 views
1

JSF 유효성 검사기를 사용하여 DB에서 고유 한 입력 (예 : 사용자 이름)을 확인하거나 컨트롤러 (관리 Bean)를 사용하여 소프트웨어 디자인을하는 것이 가장 좋습니다.JSF 프레임 워크를 사용한 유효성 검사

분명히 JSF 프레임 워크에서 Validator에서 @EJB를 사용할 수 없으므로 검사기에 Validator를 사용하는 경우 다른 방법 (DB 연결 또는 다른 방법)으로 DB에 연결해야합니다. . 컨트롤러에서이 코드를 확인하는 경우 프로세스의 일부가 아닌 논리를 사용해야합니다 (예 : createUser 메서드).

그래서 JSF 프레임 워크에 따라 가장 좋은 방법은 무엇입니까?

답변

3

분명히, JSF 프레임 워크, 나는 경우에 나는 검사의 검사기를 사용하므로, 나는 다른 방법으로 DB에 연결하는 것, 유효성 검사기에 @EJB를 사용할 수 없습니다 (JDBC 연결 또는 뭔가).

맞아. 이에 대한 일반적인 해결 방법은 유효성 검사기를 선언하고 사용하는 것입니다 (@ManagedBean).

예.

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

또는

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

웅장한 BalusC와

@ManagedBean @RequestScoped // Can be @ApplicationScoped if it does not hold any state. public class UsernameValidator implements Validator { @EJB private UserService userService; // ... } 

... – lionheart

+0

당신은 환영합니다. – BalusC

+0

A Primefaces 관찰 :이 대답에 설명 된대로 안에 을 사용하면 작동하지 않는다는 것을 알게되었습니다 (삽입 된 EJB에서 Null 포인터 예외). 그러나 위와 같이 의 유효성 검사기 속성 내에서 EL 표현식을 사용하면 완벽하게 작동합니다. – 8bitjunkie

관련 문제