Java Dropwizard捕获所有错误页面

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.*

我正在尝试创建一个错误资源,它将为所有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.*;
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=/" />