2015-10-03 2 views
9

Я использую аннотацию @JsonView, но это не работает, вот мой код и возвращаемые данные, пожалуйста, помогите мне посмотреть, где я ошибаюсь.JsonView не работает

Моя весенняя баня показывает издание «spring-web-3.2.8.RELEASE.jar», и я просто добавляю этот компонент, я не знаю, полезен он или нет, и я просто использую @JsonView напрямую в моем коде

<bean id = "jacksonMessageConverter" class = "org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
     </bean> 

Вот Посмотреть класс

public class View { 
    public interface Summary{}; 
} 

Это класс объектов пользователя (с «установить» «получить» метод опущен), он имеет несколько атрибутов, которые соответствующую базу данных, атрибут статуса не должен возвращаться в json-данных.

public Class User{ 
    @JsonView(View.Summary.class) 
    private Integer uid; 

    @JsonView(View.Summary.class) 
    private String first; 

    @JsonView(View.Summary.class) 
    private String last; 

    @JsonView(View.Summary.class) 
    private String email; 

    @JsonView(View.Summary.class) 
    private String password; 

    private Integer status; 

} 

Я имел контроллер

@RequestMapping(value="/login", method=RequestMethod.POST) 
@JsonView(View.Summary.class) 
@ResponseBody 
public Message login(String email, String password){   
    User user = userMapper.findUser(email,password);   

    Message message = new Message();     
    message.setUser(user); 
    return message;  
} 
} 

и вот мой класс сообщений с «набором» «получить» методы

public class Message { 
    private int box_hits; 

    private List<Box> boxes; 

    @JsonView(View.Summary.class) 
    private User user; 
} 

, когда я использую почтальон для проверки URL, он показывает данные json, очевидно, он не должен возвращаться с атрибутом без @JsonView, что не так с моим кодом?

{ 
    "box_hits": 0, 
    "boxes": null, 
    "user": { 
    "uid": 1, 
    "first": "yuan", 
    "last": "kang", 
    "email": "[email protected]", 
    "password": "123", 
    "status": 0 
    } 
} 
+0

Для весны 4.2 работать с '@ JsonView' см. Http://stackoverflow.com/questions/32299334/jacksons-jsonview-annotation-does-not-work#38777244 – GKislin

ответ

13

Как описано в the announcement blog post, эта функция доступна только в Spring Framework 4.2. Он не будет работать с Spring 3.2.8.

Смежные вопросы