为我的PF计划加载事件时,有时可能会发生异常。是否可以通过某种方式通知用户(使用growl组件)发生了这种情况?
编辑:
这就是捕获异常的方式:
catch (Exception e) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Sample error message", "Sample Error"));
RequestContext.getCurrentInstance().update("scheduleForm:scheduleGrowl");
e.printStackTrace();
}
这是定义计划组件的xhtml的一部分:
<ui:define name="content">
<h:form id="scheduleForm">
<p:growl id="scheduleGrowl" showDetail="true" autoUpdate="true" sticky="true"/>
<p:schedule value="#{scheduleController.scheduleModel}"
view="agendaDay" slotMinutes="15" resizable="false"
draggable="false" firstHour="8"
locale="${localeResolver.staticLocale}"
axisFormat="${localeResolver.defaultTimeFormat}"
timeFormat="${localeResolver.defaultTimeFormat}"
>
</p:schedule>
</h:form>
</ui:define>
答案 0 :(得分:2)
将异常敏感代码放在try-catch
中,并使用catch
中的FacesContext#addMessage()
向上下文添加消息。
E.g。
try {
// ...
} catch (SomeException e) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(
FacesMessage.SEVERITY_FATAL, e.getClass().getName(), e.getMessage()));
// Log the exception as well?
}
如果您无法控制此操作,则需要创建自定义ExceptionHandler
。在这个答案中可以找到一些提示:What is the correct way to deal with JSF 2.0 exceptions for AJAXified components?你不一定需要显示一个完整的错误页面(虽然这是优选的,因为这种异常通常是不可恢复的,假设这确实没有错误/错误配置你的代码),你也可以在那里的faces上下文中添加一条消息。