@initbinder not working for specific model attribute

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

  • The name of a model attribute
  • The name of a request parameter
  • If none of the above apply, then the name of the class can be used, but starting with a small letter. That's how Spring exposes unnamed attributes to the model.

@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.