在jsf中强制组件渲染顺序

时间:2011-10-27 09:51:16

标签: jsf jsf-1.2

我有一个(IBM)jsf 1.2应用程序,我尝试使用faces托管bean在页面顶部显示错误, 我的问题是如果在一个组件getter中创建了一个错误并将其写入faces managed bean(错误bean),则errorbean未正确呈现,原因是jsf在另一个之前调用错误bean的getter写入错误bean的组件。

那么我如何强制jsf再次重新呈现整个页面或指定哪个能够成为第一个。

由于

1 个答案:

答案 0 :(得分:2)

您不应该在getter方法中执行任何业务工作,而应该在bean的(post)构造函数中执行任何业务工作。

E.g。

public class Bean {

    private List<Entity> entities;

    @EJB
    private EntityService entityService;

    @PostConstruct
    public void init() {
        try {
            entities = entityService.list();
        } catch (Exception e) {
            String message = String format("Failed to retrieve entities: %s", e.getMessage());
            FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR, message, null);
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            e.printStackTrace();
        }
    }

    public List<Entity> getEntities() {
        return entities;
    }

}

这也提供了多次不必要地调用业务作业的优点。