我需要知道是否有一种方法可以从查询参数设置@Produces值。 例如:如果查询参数值为'JSON',那么我想将方法头设置为@Produces(application / json),或者如果它是'XML',那么我想将其设置为@Produces(application / xml)< / p>
我知道我们可以指定多种媒体类型 @Produces({“application / json”,“application / xml”}),但它对我不起作用,因为当输出为JSON时它会给我一个错误。
非常感谢!
答案 0 :(得分:2)
Java语言规范具有可以进入注释属性的规则。具体而言,it says this
如果声明的方法的返回类型,则是编译时错误 注释类型不是以下之一:基本类型, String,Class,Class的任何参数化调用,枚举类型 (§8.9),注释类型或元素类型的数组类型(§10) 是上述类型之一。
基本上,注释(及其属性的值)意味着编译时常量。所以,不,你不能改变注释本身的价值。
您可以做的是follow this并使您的处理程序方法返回具有适当媒体类型的Response
对象。