在软件设计方面,最好的方法是:使用JSF Validator或使用Controller(managed-bean)检查数据库中的唯一输入(例如用户名)。
显然,在JSF框架中,我不能在Validator中使用@EJB,所以如果我使用Validator进行检查,那么我将不得不以另一种方式连接到DB(jdbc连接或其他东西)。 如果我在Controller中检查这个,我将不得不放置一些不必要的逻辑(例如:createUser方法)。
那么,根据JSF框架,最好的方法是什么?
答案 0 :(得分:3)
显然,在JSF框架中,我不能在Validator中使用@EJB,所以如果我使用Validator进行检查,那么我将不得不以另一种方式连接到DB(jdbc连接或东西)。
没错。一个常见的解决方法是声明并使用验证器作为@ManagedBean
。
E.g。
@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>