我有自定义验证程序userValidator,其validate()
我使用UserController
作为控制器,我使用@InitBinder
进行验证
但是我的handller方法没有调用validate() 请提示somethig .....不能共享代码....抱歉。
代码如下:
public class UserValidator implements Validator{
@Override
public boolean supports(Class<?> arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public void validate(Object arg0, Errors arg1) {
UserBean user = (UserBean) arg0;
String email = user.getEmail();
validateEmail(email, arg1);
}
private void validateEmail(String email, Errors arg1) {
System.out.println("inside the validate Email--->>>");
if (!isValidString(email)) {
arg1.rejectValue("email", "email is not empty",
"Not a Birmingham Post Code");
}
}
private boolean isValidString(String str) {
return isNotNull(str) && (str.length() > 0);
}
private boolean isNotNull(String postCode) {
return postCode != null;
}
/** The first character of the Birmingham post code is 'B' */
private boolean isNotBirminghamPostCode(String postCode) {
char val = postCode.charAt(0);
return val != 'B';
}
}
我的控制器就是这样:
public class UserController {
@Autowired
private UserValidator userValidator;
@InitBinder("user")
protected void initBinder(WebDataBinder binder) {
binder.setValidator(userValidator);
}
final static Logger logger = LoggerFactory.getLogger(UserController.class);
@RequestMapping(value="/validate", method=RequestMethod.POST, consumes = "application/json")
public @ResponseBody ErrorBean validateContact(@Valid @RequestBody UserBean userBean,BindingResult result ){
logger.debug("Inside the USerCOntroller--->>>");
System.out.println("email "+userBean.getEmail());
ErrorBean response = new ErrorBean();
List<ErrorBean> beans = new ArrayList<ErrorBean>();
if(!result.hasErrors()){
System.out.println("UserController.validateContact() has errors----");
}
else{
System.out.println("In else------->>>>");
}
.....
}