【问题标题】:How to pass error message to the error page via ExceptionHandler?如何通过 ExceptionHandler 将错误消息传递到错误页面?
【发布时间】:2013-10-24 19:12:15
【问题描述】:

我的第一个 J2EE 6 应用程序。 我正在使用焊料 ExceptionHandler 来处理异常,但我不太喜欢它。对于我想做的事情来说,这似乎太复杂了。

例如

import java.io.IOException;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jboss.solder.exception.control.CaughtException;
import org.jboss.solder.exception.control.Handles;
import org.jboss.solder.exception.control.HandlesExceptions;

/**
 * Handle exceptions and redirect page.
 */
@HandlesExceptions
public class ExceptionHandlers {


    void noResult(
            @Handles CaughtException<dne.nmst.ond.exceptions.OfficeNotFoundException> caught,
            HttpServletRequest request, HttpServletResponse response) {
        caught.handled();

        try {
            String msg = caught.getException().getMessage();
            response.sendRedirect(request.getContextPath()
                    + "/searchOffice.xhtml");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

我想在 searchOffice.xhtml 中显示来自 OfficeNotFoundException 的错误消息。我如何从这里到那里?

我考虑过的一件事是将错误放入 flash 上下文中,但在尝试从此异常处理类中引用 FacesContext 时出现 NPE。

我尝试了 web.xml 中的错误页面条目。我无法让它工作。

我知道我可以将它作为重定向中的请求参数传递,但这似乎是一种解决方法。我想用最简单和“最正确”的方式(不管那是什么意思)。

我想念Seam 2,我们可以在 pages.xml 中执行此操作:

<exception class="dne.nmst.ond.exceptions.OfficeNotFoundException">
  <redirect include-page-params="false" view-id="searchOffice.xhtml">
  <message severity="warn"/>
</redirect>

<h:messages />

在视图中。

【问题讨论】:

    标签: jsf-2 exception-handling deltaspike


    【解决方案1】:

    您可以在代码中设置错误消息并指定该消息应出现在哪个 h:messages 标记中。请参阅下面的答案。

    https://stackoverflow.com/a/4194098/2450373

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 2014-03-22
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多