2012-04-16 56 views
5

Web应用程序与RestEasy的框架提前上班(@Context HttpServletResponse的响应不RestEasy的

@Path("/do3") 
@GET 
public void response(@Context HttpServletResponse response) throws IOException{ 
    response.setStatus(202); 

} 

为什么获得/ DO3返回204,而不是202感谢

PS:?(1)我切换(2)response.addHeader(“key”,“value”);可以正常工作

回答

6

RESTEasy将您的方法解释为最佳方式它可以 - 你没有指定返回类型,所以它返回204(无内容) 客户端。一个void GET方法确实没有多大意义,应该避免,或者转换成另一个HTTP动词(如POST)。

在主题上,这不是设置来自JAX-RS调用的响应状态的正确方法。您应该改用ResponseBuilder

Response.status(202).build(); 

您当然可以,只要它使通话范围内使用感注入HttpServletResponse任何其他的事情:

response.setHeader("Location", "http://www.example.com/myresource/5"); 
+1

感谢。你的意思是注入HttpServletResponse不能设置状态代码resteasy但其他功能正常工作? – jiafu 2012-04-16 06:06:06

+1

他意味着RESTEasy工作正常;你应该通过返回一个Response对象来设置状态代码。 – 2012-04-16 06:24:30

+0

对此的回答“您的意思是注入的HttpServletResponse无法在resteasy中设置状态代码,但其他功能是否正常工作?”基本上是肯定的。您可以设置标题值,但更改状态码将不起作用。 – Enwired 2017-01-17 00:21:49

相关问题