动态设置媒体类型@Produces注释值

时间:2014-01-10 20:07:52

标签: java xml json rest jax-rs

我需要知道是否有一种方法可以从查询参数设置@Produces值。 例如:如果查询参数值为'JSON',那么我想将方法​​头设置为@Produces(application / json),或者如果它是'XML',那么我想将其设置为@Produces(application / xml)< / p>

我知道我们可以指定多种媒体类型 @Produces({“application / json”,“application / xml”}),但它对我不起作用,因为当输出为JSON时它会给我一个错误。

非常感谢!

1 个答案:

答案 0 :(得分:2)

Java语言规范具有可以进入注释属性的规则。具体而言,it says this

  

如果声明的方法的返回类型,则是编译时错误   注释类型不是以下之一:基本类型,   String,Class,Class的任何参数化调用,枚举类型   (§8.9),注释类型或元素类型的数组类型(§10)   是上述类型之一。

基本上,注释(及其属性的值)意味着编译时常量。所以,不,你不能改变注释本身的价值。

您可以做的是follow this并使您的处理程序方法返回具有适当媒体类型的Response对象。