2014-01-10 62 views
1

我需要知道是否有方法可以根據查詢參數設置@Produces值。 例如:如果查詢參數值是'JSON',那麼我想將方法​​頭設置爲@Produces(application/json),或者如果它是'XML',那麼我想將它設置爲@Produces(application/xml)我知道我們可以指定多種媒體類型爲 @Produces({「application/json」,「application/xml」}),但它不適用於我,因爲它在輸出時給我一個錯誤是JSON。動態設置媒體類型@Produces註釋值

非常感謝!

+0

可能的重複:http://stackoverflow.com/questions/10636201/java-annotations-values-provided-in-dynamic-manner – CodeChimp

+0

生成JSON時會出現什麼錯誤?不管怎樣,不要使用@ @ Produces',按照@SotiriosDelimanolis(http://stackoverflow.com/a/21053612/290799)的建議將返回類型更改爲'Response',並使用'#type()來設置所需的媒體類型...)'。 –

+0

感謝米哈爾的幫助! – sf9251

回答

2

Java語言規範包含了關於註釋屬性內容的規則。具體而言,it says this

它是一個編譯時間錯誤,如果在 註釋類型中聲明的方法的返回類型不是下列之一:基本類型, 字符串,類,任何參數調用類,枚舉類型 (第8.9節),註釋類型或數組類型(第10節),其元素類型 是前述類型之一。

基本上,註釋(及其屬性的值)是編譯時間常量。所以,不,你不能改變註解本身的價值。

你可以做的是follow this並使你的處理程序方法返回一個Response對象與適當的媒體類型。

+0

感謝您的指導。它幫助! – sf9251