我在this页面使用#3方法在生产模式下自定义应用程序异常页面,但我的错误页面返回200OK HTTP状态代码,而我希望它返回500内部服务器错误(如它在开发环境中。)
我不知道如何更改状态代码。有什么想法吗?
答案 0 :(得分:1)
在默认使用的DefaultRequestExceptionHandler的handleRequestException实现中,您可以看到响应状态设置为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");
}
};
}