2010-09-15 31 views
11

Tôi xác nhận thuộc tính đến, nhưng validator bắt ngay cả những trang khác không chú thích với @Validxác nhận mùa xuân với @Valid

@RequestMapping(value = "/showMatches.spr", method = RequestMethod.GET) 
    public ModelAndView showMatchPage(@ModelAttribute IdCommand idCommand) 
//etc 

Khi tôi truy cập trang /showMatches.spr tôi nhận được lỗi org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: Invalid target for Validator [[email protected]]: [email protected],
Các validator doesn' Tôi chấp nhận nó, nhưng tôi không muốn nó xác nhận! Bởi validator này:

protected void initBinder(WebDataBinder binder) { 
     binder.setValidator(new Validator() { 
    // etc. 
}

Trả lời

23

mùa xuân sẽ không xác nhận IdCommand của bạn, nhưng WebDataBinder không cho phép bạn thiết lập một validator rằng không chấp nhận đậu bị ràng buộc.

Nếu bạn sử dụng @InitBinder, bạn có thể xác định rõ ràng tên của thuộc tính mô hình bị ràng buộc bởi mỗi WebDataBinder (nếu phương pháp initBinder() của bạn được áp dụng cho tất cả các thuộc tính), như sau:

@RequestMapping(...) 
public ModelAndView showMatchPage(@ModelAttribute IdCommand idCommand) { ... } 

@InitBinder("idCommand") 
protected void initIdCommandBinder(WebDataBinder binder) { 
    // no setValidator here, or no method at all if not needed 
    ... 
} 

@RequestMapping(...) 
public ModelAndView saveFoo(@ModelAttribute @Valid Foo foo) { ... } 

@InitBinder("foo") 
protected void initFooBinder(WebDataBinder binder) { 
    binder.setValidator(...); 
} 
Các vấn đề liên quan