【发布时间】:2015-09-29 20:26:21
【问题描述】:
我维护一个 Web 应用程序,该应用程序有一个带有 JSF 标记 <f:event 的页面。我在服务类中重写了一个方法,以便它抛出业务异常。但是,当业务异常被抛出时,它不会被托管 bean 捕获,并且异常会显示在页面上。看来我的代码try/catch 不起作用。
在 XHTML 中:
<f:event listener="#{resourceBean.init(enrollment)}" type="preRenderView" />
Managed Bean 中的监听器方法:
private boolean canCreateResource;
public void init(Enrollment enrollment) {
(...)
try {
canCreateResource = resourceService.canCreateResource(enrollment);
} catch (BusinessException e) {
canCreateResource = false;
}
}
服务类中的方法:
public boolean canCreateResource(Enrollment enrollment) {
if (...) {
if (mandateService.isCoordinator(user, course)) {
return true;
} else {
throw new BusinessException("Undefined business rule.");
}
}
return false;
}
根据我在其他网站上阅读的内容,我想我必须实现一些 JSF 的处理程序类。但是哪个以及如何?
已编辑
OBS 1:BusinessException 类扩展了 RuntimeException 类。
OBS 2:创建属性canCreateResource 是为了控制按钮的呈现。
【问题讨论】:
标签: jsf jakarta-ee exception-handling ejb service-layer