我在春天使用自定义验证器,无法调用验证方法

时间:2014-03-26 12:51:41

标签: spring-mvc

我有自定义验证程序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------->>>>");
    }
.....
}

0 个答案:

没有答案