2015-12-30 62 views
9

自4.1版以来,Spring支持@JsonViewSpring和@JsonView具有多个标识符

诠释一个Spring位指示的(与@RestController注释)方法@JsonView有多个标识符,我得到了以下异常:显然根据JsonViewResponseBodyAdviceJavadoc以下各项为真

java.lang.IllegalArgumentException: @JsonView only supported for request body advice with exactly 1 class argument: org.[email protected]a566e37e 

请注意,尽管@JsonView允许指定多个类别为 ,但只有支持响应正文建议的使用10正好有一个类参数。考虑使用复合接口。

同样标注的控制器的方法参数(与@RequestBody注释)也当与@JsonView具有多个标识符;根据JsonViewRequestBodyAdviceJavadoc

注意的是,尽管@JsonView允许多个类是 规定,对请求主体意见的使用只限于与 只有一个类参数的支持。考虑使用复合接口。

有谁知道是否计划修复?我目前的春天版本是4.2.4。

这将是非常有用的创建JSON视图公共,私人(扩展公共),总结和详细(扩展总结)的意见,然后将它们在控制器方法结合!

回答

2

Jackson JsonView documentation所述,“每个序列化只有单个活动视图;但由于视图的继承,可以通过聚合组合视图”。

具体而言,如果你想同时使用FooBar JsonViews,定义一个FooBar接口,将它们组合为:

interface Foo {} 

interface Bar {} 

interface FooBar extends Foo, Bar {} 

然后,您可以用@JsonView(Foo.class)@JsonView(Bar.class)注释你的领域,并在控制器级别使用@JsonView(FooBar.class)

+0

谢谢Sebastien您的意见,但问题是你我们可以使用继承(而不是聚合)。 –

+0

不确定要理解,请给我更多有关您的使用案例的详细信息? –

相关问题