关于使用JSF框架进行设计验证的问题

时间:2011-08-09 11:58:27

标签: validation jsf-2 ejb

在软件设计方面,最好的方法是:使用JSF Validator或使用Controller(managed-bean)检查数据库中的唯一输入(例如用户名)。

显然,在JSF框架中,我不能在Validator中使用@EJB,所以如果我使用Validator进行检查,那么我将不得不以另一种方式连接到DB(jdbc连接或其他东西)。 如果我在Controller中检查这个,我将不得不放置一些不必要的逻辑(例如:createUser方法)。

那么,根据JSF框架,最好的方法是什么?

1 个答案:

答案 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>