在JSF 2.0中抛出异常时显示错误消息

时间:2011-08-24 19:05:33

标签: jsf-2 richfaces

我正在研究JSF 2.0,Richfaces 4.0。我有一个要求,当发生任何后端异常时,我需要显示错误消息。我们正在显示使用rich:dataTable的用户列表。在获取用户列表时,如果发生任何后端异常,则需要在顶部显示错误消息。

在支持bean中,我们有一个变量usersList。在getUsersList()方法中,我们调用db以获取用户列表。

<rich:dataTable value="#{myBean.usersList}>
</rich:dataTable>

每当异常发生时,我在getUsersList()方法中捕获该异常并构造FacesMessage obj并将该消息obj添加到FacesContext。我正在使用

<rich:messages />

标签显示错误消息。不显示错误消息。

有人可以帮我吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

在bean的(post)构造函数中执行数据库交互作业而不是getter。如果<rich:messages>位于视图之前 <rich:dataTable>并且视图由GET请求打开和/或getter仅在渲染响应期间执行作业,那么显示消息太晚了,只是因为<rich:message>组件已经呈现给响应。

在JSF中,getter应该包含 no 业务逻辑。它们应该只是访问bean属性的简单入口点。在豆子的生命中,它们可以不止一次被召唤。对于业务工作,您应该使用(post)构造函数或(action)事件方法。

public class Bean {

    private List<User> users;

    @EJB
    private UserService userService;

    @PostConstruct
    public void init() {
        users = userService.list(); // This will be invoked directly after bean's construction and all dependency injections.
    }

    public List<User> getUsers() {
        return users; // Look, just return the property. Do not do anything else.
    }

    // ...
}

相关: