Mik*_*iou 11 spring spring-mvc jackson
Spring @JsonView自版本4.1起支持.
@RestController使用@JsonView具有多个标识符的Spring控制器(带注释)方法注释我得到以下异常:
java.lang.IllegalArgumentException: @JsonView only supported for request body advice with exactly 1 class argument: org.springframework.web.method.HandlerMethod$HandlerMethodParameter@a566e37e
Run Code Online (Sandbox Code Playgroud)
显然,根据JsonViewResponseBodyAdvice的Javadoc中符合下列条件:
请注意,尽管@JsonView允许指定多个类,但只有一个类参数才支持使用响应正文建议.考虑使用复合接口.
同样,当@RequestBody使用@JsonView具有多个标识符的控制器的方法参数(带注释)进行注释时; 根据JsonViewRequestBodyAdvice的的Javadoc:
请注意,尽管@JsonView允许指定多个类,但只有一个类参数才支持使用请求体建议.考虑使用复合接口.
有人知道是否计划修复?我目前的Spring版本是4.2.4.
这对于为公共,私有(扩展公共),摘要和详细(扩展摘要)视图创建json视图,然后在控制器方法中组合它们非常有用!
Séb*_*uze 10
正如Jackson JsonView文档中所解释的那样,"每个序列化只有一个活动视图;但由于视图的继承,可以通过聚合组合视图".
具体来说,如果要同时使用Foo和BarJsonViews,请定义一个FooBar将它们组合在一起的接口,如下所示:
interface Foo {}
interface Bar {}
interface FooBar extends Foo, Bar {}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用@JsonView(Foo.class)或注释您的字段,@JsonView(Bar.class)并@JsonView(FooBar.class)在控制器级别使用.
| 归档时间: |
|
| 查看次数: |
5256 次 |
| 最近记录: |