如何在 ADF JSFF 中捕获异常

How to Capture Exception in ADF JSFF

我目前正在使用 Oracle ADF Essentials using Oracle Enterprise Pack for Eclipse and GlassFish 4 进行开发。

我想捕获一个 Java Exception 并在 JSFF Task Flow 视图

内的屏幕上正确显示它

怎么做?

这里是 Oracle 官方文档 Handling Exceptions in Task Flows

是说

In the task flow diagram, right-click the activity and choose Mark Activity > Exception Handler

因此使用方法创建支持 bean 或使用方法创建 class 并将其转换为数据控件。请参阅文档 Using Method Call Activities 对方法调用进行拖放并将 activity 标记为异常。

使用以下代码捕获使用 ADF ControllerContext 引发的异常。我假设方法名称为 showException

public void showException() {
  ControllerContext cc = ControllerContext.getInstance();

  Exception ex = cc.getCurrentViewPort().getExceptionData();
  String message = ex.getMessage();


  FacesContext fc = FacesContext.getCurrentInstance();
  FacesMessage facesMessage =
  new FacesMessage(FacesMessage.SEVERITY_ERROR, "UTF: " + message, null);
  fc.addMessage(null, facesMessage);

  cc.getCurrentRootViewPort().clearException();
  fc.renderResponse();
}