原諒我,但我可能不熟悉正確提出此問題所需的所有術語。更改jax-rs REST服務中的內容類型
我正在使用jax-rs的org.apache.cxf.jaxrs.ext
實現在Java中使用相當簡單的REST Web服務。方法頭是這樣的:
@GET
@Path("json/{fullAlias}")
@Produces({"application/json"})
public String json(@PathParam("fullAlias") String fullAlias, @Context MessageContext req)
其中MessageContext是org.apache.cxf.jaxrs.ext.MessageContext
。
有兩件事情我想完成我似乎無法弄清楚:
- 更改內容類型,如果某些條件得到滿足(如錯誤)
- 變化響應的狀態代碼
我已經用改變由通過MessageContext的訪問它的響應嘗試:
HttpServletResponse response = req.getHttpServletResponse();
response.setContentType("text/plain")
response.setStatus("HttpServletResponse.SC_BAD_REQUEST);
但是這些變化與發送的響應沒有關係;有或沒有@Produces註解,設置方法內的內容類型不影響實際的內容類型(使用註釋,它當然返回「application/json」,沒有默認爲「text/html」)。
我正在返回一個簡單的字符串作爲正文。我喜歡嘗試返回一個javax.ws.rs.core.Response對象來做我想做的事,但我不太瞭解它。
我將如何更改此方法內的內容類型和/或狀態代碼?
謝謝!我想知道如果這樣的事情會起作用,但你讓我知道如何做到這一點。 – Indigenuity 2011-04-05 19:34:01