我有一个(IBM)jsf 1.2应用程序,我尝试使用faces托管bean在页面顶部显示错误, 我的问题是如果在一个组件getter中创建了一个错误并将其写入faces managed bean(错误bean),则errorbean未正确呈现,原因是jsf在另一个之前调用错误bean的getter写入错误bean的组件。
那么我如何强制jsf再次重新呈现整个页面或指定哪个能够成为第一个。
由于
答案 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;
}
}
这也提供了多次不必要地调用业务作业的优点。