One way to do this is to instantiate Validator as service, and inject into to your controller. Annotate @Validated on your model.
@Autowired
@Qualifier("loginFormValidator")
private Validator validator;
@RequestMapping(value="/home", method = RequestMethod.POST)
public String homeSubmit(@Validated LoginForm loginForm , BindingResult bindResult){
if(bindResult.hasErrors() || bindResult.hasFieldErrors() ){
return "home";
}else{
return "Success";
}
}
Instantiate your validator as service:
@Service("loginFormValidator")
public class LoginFormValidator implements Validator {
public boolean supports(Class<?> classz) {
return LoginForm.class.equals(classz);
}
public void validate(Object target, Errors arg1) {
System.out.println("inside validate method validator");
LoginForm loginForm = (LoginForm) target;
if(! loginForm.getUserName().equalsIgnoreCase("xxx") ){
arg1.rejectValue("userName","Invalid Data");
}
if(! loginForm.getPassword().equalsIgnoreCase("yyy")){
arg1.rejectValue("password","Invalid Data");
}
}
}