2013-04-16 131 views
0

我正在为我的RESTful服务使用Jersey框架。Jersey,在返回资源前返回浏览器响应

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

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

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

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

回答

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并解析出从PARAMS自己做什么HttpServletRequest的。如果我找到一个错误,我打电话

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

这是你在做什么你的基类?

+0

嗨克里斯,谢谢你的答案是在正确的方向,我试着抛出异常,但在浏览器上显示如: 错误创建名为'customersWebService'的bean:调用init方法失败;嵌套异常是javax.ws.rs.WebApplicationException 它不显示我们的自定义消息,即参数丢失或我们自己的错误代码,是的,我正在尝试做你做什么扩展ServletContainer,我也剥离了请求我的基类,如果你可以分享你的ServletContainer方法的代码将是伟大的。 –

+0

我有兴趣了解如何扩展该类并将其添加到框架,以便webrequests通过它们。 但我想我尝试了过滤器的方法,我的问题是,我使用自定义注释来标记我的资源类中所需的资源类参数,这些注释在过滤器或servlet容器扩展类中不会提供给我。 –

+0

您需要在web.xml中指定您的ServletContainer,如下所示: com.tcore.tfs.adapters.rest.RestAdapterServletContainer ChrisO

相关问题