I am using @valid and @initbinder for validation of the data being passed to the service but I am facing an issue that @InitBinder
is working only globally,i.e.
Looking at the signature of your method it has to be
@InitBinder("loginRequest")
with a small l
The value of @InitBinder
can be one of the following
@a-better-oliver's answer is great, but below is an another approach to the same problem with Spring, more verbose but typesafe:
@InitBinder
protected void initBinder(WebDataBinder binder){
if (binder.getTarget() != null
&& LoginRequest.class.equals(binder.getTarget().getClass())) {
binder.setValidator(new LoginRequestValidator());
}
}
This way we do not rely on the hard-coded string and also do not care how Spring exposes unnamed attributes.