【发布时间】:2013-05-28 16:03:59
【问题描述】:
我有一个 jsf 应用程序,我在 @PostConstruct 方法中编写了一些代码:
@PostConstruct
public void init() {
try {
// Do some form preparation
} catch (Exception e) {
try {
FacesContext.getCurrentInstance().getExternalContext().dispatch("error.faces");
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
我有这个error.xhtml:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" template="/templates/main.xhtml">
<ui:define name="title">
<title>#{msg['page.title']}</title>
</ui:define>
<ui:define name="body">
#{msg['global.error']}
</ui:define>
</ui:composition>
现在我希望“global.error”和“page.title”不作为资源包是静态的,而是应该在 post 构造中的某个位置传递我想要的消息,以便 error.xhtml 可以读取和显示,这样做的原因是这个屏幕应该从所有屏幕中引用,所以一个搜索屏幕可以显示“搜索时出错”,另一个屏幕可以显示“获取数据时出错”或“您请求的用户在我们的系统中不存在"
【问题讨论】:
标签: jsf-2 error-handling resourcebundle forward dispatch