我具有以下JsonView
配置:
public class JsonViews {
public static class AdminView {
}
public static class PublicView extends AdminView {
}
}
我有以下实体:
public class UserEntity {
@JsonView(JsonViews.AdminView.class)
private int id;
@JsonView(JsonViews.PublicView.class)
private int name;
// getters / setters
}
在我的控制器中,我有以下方法:
我希望此方法返回所有属性
@JsonView(JsonViews.AdminView.class)
public List<User> getAllOnlyForAdmin { return foo; }
我希望它仅返回name属性
@JsonView(JsonViews.PublicView.class)
public List<User> getAllOnlyForAdmin { return foo; }
可能吗?如果没有,还有其他解决方法吗?
答案 0 :(得分:1)
对于仅仅名称情况,只有一个视图是可能的;
public class JsonViews {
public static class NameView {
}
}
和实体;
public class UserEntity {
private int id;
@JsonView(JsonViews.NameView.class)
private int name;
// getters / setters
}
和控制器方法;
@JsonView(JsonViews.NameView.class)
@RequestMapping("/admin/users")
public List<User> getUsersWithOnlyName() {
return userGetter.getUsers();
}
对于每个User
,只会为您提供名称字段,并且
@RequestMapping("/users")
public List<User> getUsers() {
return userGetter.getUsers();
}
将为您提供整个实体,这是默认行为。