【问题标题】:a question about the design Validation using JSF framework关于使用 JSF 框架进行设计验证的问题
【发布时间】:2011-08-09 11:58:27
【问题描述】:

在软件设计中,最好的方法是:使用 JSF 验证器或使用控制器(托管 bean)检查数据库中的唯一输入(例如用户名)。

显然,在 JSF 框架中,我不能在验证器中使用@EJB,所以如果我使用验证器进行检查,那么我将不得不以另一种方式连接到数据库(jdbc 连接或其他方式)。 如果我在 Controller 中检查这个,我将不得不将一些不需要的逻辑作为流程的一部分(例如:createUser 方法)。

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

【问题讨论】:

    标签: validation jsf-2 ejb


    【解决方案1】:

    显然,在 JSF 框架中,我不能在 Validator 中使用 @EJB,所以如果我使用 Validator 进行检查,那么我将不得不以另一种方式连接到数据库(jdbc 连接或东西)。

    没错。一个常见的解决方法是声明验证器并将其用作@ManagedBean

    例如

    @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>
    

    【讨论】:

    • Primefaces 观察:我注意到在此答案中描述的 内使用 不起作用(注入的 EJB 上的空指针异常)。但是,如上所述在 的验证器属性中使用 EL 表达式效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 2023-03-19
    相关资源
    最近更新 更多