gpt4 book ai didi

具有多个标识符的 Spring 和 @JsonView

转载 作者:IT老高 更新时间:2023-10-28 13:47:03 35 4
gpt4 key购买 nike

Spring 从 4.1 版本开始支持 @JsonView

使用具有多个标识符的 @JsonView 注释 Spring Controller 的(使用 @RestController 注释)方法我得到以下异常:

java.lang.IllegalArgumentException: @JsonView only supported for request body advice with exactly 1 class argument: org.springframework.web.method.HandlerMethod$HandlerMethodParameter@a566e37e

显然根据JsonViewResponseBodyAdviceJavadoc以下是正确的:

Note that despite @JsonView allowing for more than one class to be specified, the use for a response body advice is only supported with exactly one class argument. Consider the use of a composite interface.

同样地,当使用具有多个标识符的 @JsonView 注释 Controller 的方法参数(使用 @RequestBody 注释)时;根据 JsonViewRequestBodyAdviceJavadoc :

Note that despite @JsonView allowing for more than one class to be specified, the use for a request body advice is only supported with exactly one class argument. Consider the use of a composite interface.

有人知道是否计划进行修复吗?我当前的 Spring 版本是 4.2.4。

这将非常有用为公共(public)、私有(private)(扩展公共(public))、摘要和详细(扩展摘要) View 创建 json View ,然后将它们组合到 Controller 方法中!

最佳答案

Jackson JsonView documentation 中所述, “每个序列化只有一个事件 View ;但由于 View 的继承,可以通过聚合组合 View ”。

具体来说,如果你想同时使用 FooBar JsonViews,定义一个 FooBar 接口(interface)将它们组合如下:

interface Foo {}

interface Bar {}

interface FooBar extends Foo, Bar {}

然后您可以使用 @JsonView(Foo.class)@JsonView(Bar.class) 注释您的字段并使用 @JsonView(FooBar.class ) 在 Controller 级别。

关于具有多个标识符的 Spring 和 @JsonView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34535599/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com