2013-10-24 72 views
0

我的首张J2EE 6应用程序。 我正在使用ExceptionHandler来处理异常,但我并不喜欢它。我想要做的事情似乎太复杂了。如何通过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中尝试了一个错误页面条目。我无法让它工作。

我知道我可以将它作为请求参数传递给重定向,但这似乎是一种解决方法。我想以最简单和“最正确”的方式做到这一点(无论如何)。

我错过缝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 /> 
视图

回答

相关问题