2

对不起我的英语不好。我正在使用 grizzly 和 jersey 来构建一个 Web 应用程序。

我这样实现

        ErrorModel errorModel = new ErrorModel("1", "1", "1");
        WebApplicationException applicationException = (WebApplicationException) exception;
        return Response.status(applicationException.getResponse().getStatus()).type(MediaType.APPLICATION_JSON_TYPE).entity(errorModel).build();

当我访问一个不存在的页面时。我发现它抛出了一个 WebApplicationException。所以我调试并发现这个方法被调用并返回上面的响应。但最后,http 响应是一个由 grizzly 构建的 html 页面。我应该怎么办

4

1 回答 1

5

确保您设置了 RESPONSE_SET_STATUS_OVER_SEND_ERROR 属性。

我对 grizzly 也有同样的问题,它正在捕获我的 400 并发送回默认的通用 servlet 错误页面。这是球衣 2 的解决方案。

public class RestApplication extends ResourceConfig {

    private static final Logger logger = Logger.getLogger(RestApplication.class.getName());

    public RestApplication() {
        // Set this property so that the 400 will still send the entity correctly.
        property(ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR, "true");
        registerModules();
    }
于 2015-03-02T17:12:48.053 回答