我正在使用JSF 2,当我使用某些Web服务时,我遇到了一些异常,我希望捕获该异常并在我的.xhtml
页面上显示该消息。
我该怎么做?
答案 0 :(得分:0)
为了举例说明BalusC所解释的内容,您可以编写一个在catch语句中调用的简单方法。
private void addErrorMessage(String msg, String clientId) {
String codingErrorMsgKey = "coding_error_msg";
FacesMessage fm;
FacesContext facesContext = FacesContext.getCurrentInstance();
if (StringUtils.isEmpty(msg)) {
ResourceBundle bundle = facesContext.getApplication().getResourceBundle(facesContext, "bundle");
fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, bundle.getString(codingErrorMsgKey), bundle.getString(codingErrorMsgKey));
}
else {
fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg);
}
facesContext.addMessage(clientId, fm);
}
该方法的作用非常简单:您可以从应用程序的资源包中为其提供一条消息,然后是全局(仅当clientId为null时)错误(因为FacesMessage.SEVERITY_ERROR
){{ 1}}已创建。然后,如果您未提供任何消息,则使用默认字符串将创建的错误消息添加到FacesMessage
。
由于此方法能够创建与globalId相关的错误消息,因此您不必使用facesContext
属性。只需指定globalOnly
即可让代码显示所有消息(全局或非全局)。
同样,这只是示例代码。您可能需要调整/改进以使其成为您自己的。此外,您几乎可以复制此方法来处理信息消息。
作为处理错误消息的一般方法,您可以在超类中使此方法可用,然后每个控制器都会扩展。