Java Dropwizard捕获所有错误页面
我正在尝试创建一个错误资源,它将为所有300-599错误代码显示完全相同的视图。除了错误的发帖请求外,我已经让它大部分工作正常了。我得到的错误是Java Dropwizard捕获所有错误页面,java,jersey,jetty,dropwizard,Java,Jersey,Jetty,Dropwizard,我正在尝试创建一个错误资源,它将为所有300-599错误代码显示完全相同的视图。除了错误的发帖请求外,我已经让它大部分工作正常了。我得到的错误是 WARN [2017-09-06 23:56:51,475] org.eclipse.jetty.server.handler.ErrorHandler: Error page loop /error 在我的ErrorResource逻辑中似乎有什么不对劲,但我似乎无法确定 这是ErrorResource类 import javax.ws.rs.*
WARN [2017-09-06 23:56:51,475] org.eclipse.jetty.server.handler.ErrorHandler: Error page loop /error
在我的ErrorResource逻辑中似乎有什么不对劲,但我似乎无法确定
这是ErrorResource类
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriInfo;
import com.project.views.ErrorView;
import java.net.URI;
@Path("/error/")
@Produces(MediaType.TEXT_HTML)
public class ErrorResource {
private String appName;
@Context
UriInfo uri;
public ErrorResource(String appName) {
this.appName = appName;
}
@POST
public Response errorPost() {
URI redirectUri = uri.getBaseUri();
return Response.seeOther(redirectUri).build();
}
@GET
public ErrorView error() {
return new ErrorView(appName);
}
@GET
@Path("/404/")
public Response error404() {
return Response.status(404).entity(new ErrorView(appName)).build();
}
}
errorPost()函数给我带来了麻烦。其想法是在301重定向回同一页面,表面上执行一个GET请求,该请求被常规的error()函数捕获。我的应用程序类显示我正在注册错误处理程序以捕获所有300-599
public class WebAppApplication extends Application<WebAppConfiguration> {
public static void main(String[] args) throws Exception {
new WebAppApplication().run(args);
}
@Override
public void initialize(Bootstrap<WebAppConfiguration> bootstrap) {
bootstrap.addBundle(new AssetsBundle("/www", "/static"));
bootstrap.addBundle(new ViewBundle());
}
@Override
public void run(WebAppConfiguration config, Environment environment) {
/* Error Handling */
ErrorPageErrorHandler errorHandler = new ErrorPageErrorHandler();
errorHandler.addErrorPage(300,403,"/error");
errorHandler.addErrorPage(404, "/error/404");
errorHandler.addErrorPage(405,599,"/error");
/* Resources */
final HomeResource homeResource = new HomeResource(config.getAppName());
final ErrorResource errorResource = new ErrorResource(config.getAppName());
/* Environment Registration */
environment.getApplicationContext().setErrorHandler(errorHandler);
environment.jersey().register(homeResource);
}
}
ErrorView mustache模板实际上只包含消息、导航栏和元刷新HTML标记
<meta http-equiv="refresh" content="10; url=/" />
但是向“/input/”(或任何)端点发出错误的POST请求会抛出“页面循环”错误,并在浏览器中返回该错误
浏览器屏幕截图:
将此消息设置为“全面捕获”错误消息将有助于保持代码库的干净,对用户有帮助,并且即使在意外失败时也能保持网站的品牌
我很感激社区可能有任何见解,并对建议先发制人地说声“谢谢” 你的意思是错误太多的重定向?我想我没见过那个错误
<meta http-equiv="refresh" content="10; url=/" />