2015-10-03 20 views
9

Tôi sử dụng chú thích @JsonView, nhưng nó không hoạt động, đây là mã của tôi và dữ liệu trả về, bạn vui lòng giúp tôi tìm nơi tôi sai.JsonView không hoạt động

Bình xuân của tôi hiển thị phiên bản "spring-web-3.2.8.RELEASE.jar" và tôi chỉ thêm bean này, tôi không biết liệu nó có hữu ích hay không, và tôi chỉ sử dụng @JsonView trực tiếp trong mã của tôi

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

Đây là lớp View

public class View { 
    public interface Summary{}; 
} 

Đây là lớp thực thể tài khoản (với "thiết lập" "nhận" phương pháp bỏ qua), nó có một số thuộc tính mà tương ứng với cơ sở dữ liệu, có một thuộc tính "trạng thái" không cần trả về dữ liệu 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; 

} 

tôi đã có điều khiển

@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;  
} 
} 

và đây được tin lớp học của tôi với "thiết lập" "nhận" phương pháp

public class Message { 
    private int box_hits; 

    private List<Box> boxes; 

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

khi tôi sử dụng người đưa thư để kiểm tra url, nó cho thấy dữ liệu json, rõ ràng, nó không nên trả về với thuộc tính mà không có @JsonView, cái gì sai với mã của tôi?

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

Để Spring 4.2 hoạt động với '@ JsonView', hãy xem http://stackoverflow.com/questions/32299334/jacksons-jsonview-annotation-does-not-work#38777244 – GKislin

Trả lời

13

Như được mô tả trong the announcement blog post, tính năng này chỉ khả dụng ở Spring Framework 4.2. Nó sẽ không hoạt động với Spring 3.2.8.