2

如何防止向用户显示发生的任何异常?如果发生任何错误,我可以想象将用户重定向到特定页面。

特别是我想防止像这样的 HTTP 状态 500 视图异常:

javax.faces.application.ViewExpiredException: /index.xhtmlNo saved view state could be found for the view identifier: /index.xhtml
    at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:132)
    at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
    at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
4

4 回答 4

4

基本上,您可以将异常处理程序添加到 MyFaces 配置中。

您需要提供一个工厂方法,然后提供一个实现。您还需要设置错误页面重定向。

https://cwiki.apache.org/MYFACES/handling-server-errors.html

于 2012-08-19T13:57:44.497 回答
1

为什么不在您的 ? 中定义自定义错误页面web.xml?您可以指定 HTTP 错误代码,如下所示:

<error-page>
    <error-code>500</error-code>
    <location>/myerror.jsp</location>
</error-page>

...或 Java 异常类:

<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/myerror.jsp</location>
</error-page>

这个解决方案的优点是不需要任何额外的实现——除了错误页面本身。

于 2012-08-20T12:43:02.197 回答
0

在 catch 块中删除printStackTrace()方法...并编写重定向代码

例如:

try{

        // Your code

     }catch(Exception ex){

       // Redirection Code

     }
于 2012-08-19T13:57:55.957 回答
-3

同意@Kumar Vivek Mitra,但我认为您可以在 finally 块中添加重定向

 try{

    // Your code

 }catch(Exception ex){

   // syserr

 }finally{
      //redirect
 }
于 2012-08-19T14:16:52.147 回答