I\'m validating incoming attribute, but the validator catches even the other pages not annotated with @Valid
@RequestMapping(value = \"/showMatches
Spring isn't going to validate your IdCommand, but WebDataBinder doesn't allow you to set a validator that doesn't accept the bean being bound.
If you use @InitBinder, you can explicitly specify the name of the model attribute to be bound by each WebDataBinder (otherwise your initBinder() method is applied to all attributes), as follows:
@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(...);
}