2014-02-13 64 views
1

我用从this页#3方法时,在生产模式,但是我的错误页面返回200 OK HTTP状态代码,自定义应用程序异常页,而我希望它返回500内部服务器错误(因为它在开发环境中)。自定义应用程序异常HTTP状态代码

我不知道如何改变状态代码。有任何想法吗?

回答

1

在handleRequestException实现将使用默认的DefaultRequestExceptionHandler的,你可以看到,响应状态设置为500:

response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); 

你必须做你的代码非常类似的东西(未测试):

public RequestExceptionHandler decorateRequestExceptionHandler(final Logger logger, final ResponseRenderer renderer, 
    final ComponentSource componentSource, final Response response, 
    @Symbol(SymbolConstants.PRODUCTION_MODE) boolean productionMode, Object service) { 
    if (!productionMode) return null; 

    return new RequestExceptionHandler() { 
     public void handleRequestException(Throwable exception) throws IOException { 
      logger.error("Unexpected runtime exception: " + exception.getMessage(), exception); 
      response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); 
      ExceptionReporter index = (ExceptionReporter) componentSource.getPage("Index"); 

      index.reportException(exception); 

      renderer.renderPageMarkupResponse("Index"); 
     } 
    }; 
}