【发布时间】:2015-12-06 10:33:06
【问题描述】:
有什么方法可以为整个 Spring MVC 休息控制器声明 @JsonView 吗?
我知道我可以为这样的特定方法声明@JsonView:
@RequestMapping(value = "/user", method = RequestMethod.G
@JsonView(User.WithoutPasswordView.class)
public User getUser() {
return new User("eric", "7!jd#h23");
}
但我不想为每个方法定义@JsonView,因为我的方法是在超级类中定义的,我不想仅仅为了添加单个注释而覆盖它们。
我想为整个控制器声明@JsonView,例如:
@RestController
@RequestMapping(ZONES_PATH)
@JsonView(User.WithoutPasswordView.class)
public class ZoneResource extends GenericRestService<Zone> {
...
有什么方法可以实现吗?
【问题讨论】:
-
您解决了问题?我也有同样的情况。 :)
-
我已经放弃了
@JsonView。它们是有问题且令人困惑的。定义特定的传输对象似乎更清晰,例如使用映射器。 -
你能告诉我如何使用 mapper 来解决这个问题吗?你可以给我推荐一个有用的链接吗?谢谢!
-
您只需定义一个与原始对象相同的对象,但只包含您想要包含的属性。使用例如将原始对象映射到新对象MapStruct (mapstruct.org)。返回那个新对象。
标签: java json spring-mvc jackson json-view