JSF投掷邮政编码的异常:如何显示消息



jsf在bean init期间抛出异常,没有消息,没有。

public class MyBean {
   @PostConstruct
   public void init() {
       try {
           // some code,
       } catch (Throwable t) {
           // if adding a facesMessage here: it did not show up either
           throw new Exception(t);
       }
   }
}

<html>
<body>
   <h:outputText value="#{mybean.value}"/>
   <f:messages />
</body>
</html>

当抛出异常时,响应为空:

<html><head></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;"></pre></body></html>

如何显示消息在这种情况下让用户知道?

更新

这个问题不是指定的另一个问题的重复。这个问题是关于在bean初始化期间抛出异常,以及如何向最终用户显示例外。

如何显示消息在这种情况下让用户知道?

请参阅faceScontext#addMessage

在您的捕获块中,提供适合用户显示的消息,这些消息不会揭示任何关键的应用程序或安全详细信息。

FacesMessage facesMessage = new FacesMessage("Something went wrong"); FacesContext facesContext = FacesContext.getCurrentInstance(); facesContext.addMessage(null, facesMessage);

AddMessage()的此示例将NULL指定为参数一中的clientId。因此,您的<f:messages>将显示所有未针对特定客户端ID的消息。

要将消息引导到页面中的特定消息组件,然后通过指定客户端来定义使用唯一ID <f:message id="idSingleMessage"/>的组件,并将消息直接发送到它。 facesContext.addMessage("idSingleMessage", facesMessage);

您还可以添加JSF严重性级别以在消息中呈现不同的标记样式。

最后,您可以使用日志记录库(例如log4j或slf4j)将特定错误记录到文件中。
apache Exception utils可以为您简化这一点。

最新更新