泽西岛,在击中资源之前返回对浏览器的响应

时间:2013-04-16 12:44:09

标签: java validation parameters jersey

我正在为我的RESTful服务使用Jersey框架。

我的每个资源类都继承了一个基类,我的基类里面的URL参数验证很少,所以如果我发现URL中缺少一个必填字段,我想在我的基类中停止流程(即不想去我的资源方法并从我的基类返回对浏览器的响应)。

目前我无法做到这一点,即使我尝试做例如像下面这样的事情回到浏览器中缺少参数消息,它仍然没有进入资源类Web服务方法被称为:

return Response.status(Response.Status.BAD_REQUEST)
               .entity("Parameter value missing for "+ StringHelper.ArrayToString(requiredParametersValueMissing))
               .build();

你们面临的任何想法或类似情况。投入赞赏。

1 个答案:

答案 0 :(得分:0)

您可以像这样抛出WebApplicationException:

throw new javax.ws.rs.WebApplicationException(javax.ws.rs.core.Response
.status(javax.ws.rs.core.Response.Status.BAD_REQUEST)
.entity("Parameter value missing for ").type("text/html").build());  

我通过扩展com.sun.jersey.spi.container.servlet.ServletContainer并从HttpServletRequest解析出params来处理你想要做的事情。如果我发现错误,我打电话

return super.service(baseUri, requestUri, request, response);

这是你在基类中做的吗?