2012-04-16 21 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

相關問題