springmvc校验表单

1.因为是在maven项目下,需要引入如下三个包

  <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>5.3.5.Final</version>
    </dependency>
    <dependency>
      <groupId>javax.validation</groupId>
      <artifactId>validation-api</artifactId>
      <version>1.1.0.Final</version>
    </dependency>
    <dependency>
      <groupId>org.jboss.logging</groupId>
      <artifactId>jboss-logging</artifactId>
      <version>3.3.1.Final</version>
    </dependency>

2.springmvc的配置文件中,只需要写一句话

 <mvc:annotation-driven/>

不需要再添加了。

3.Pojo中添加一些注解,比如@Past所选时间不能是将来的。

    @Past
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date becomeStudent;
    @NotNull
    private String username;

4.在控制层里的方法里要对加以判断的方法参数前面加上@Valid,而且方法里一定要有Error对象,那么它的子集BindingResult也是可以的:

@RequestMapping(value = "/add.do",method = RequestMethod.POST)
    public String add(@Valid Student student, BindingResult result,Model model, ModelMap modelMap){
        if(result.getErrorCount()>0){
            for(FieldError error : result.getFieldErrors()){
                log.info(error.getField()+"  "+error.getDefaultMessage() );
            }
        }
        model.addAttribute(student);
        modelMap.put("stu",student);
        log.info(student.toString());
        return "listStudent";
    }

一定要写在@Valid后面,有几个待验证的参就出现几次BindResult.

JSR303的验证类型:

@Null                 被注释的元素必须为 null
@NotNull               被注释的元素必须不为 null
@AssertTrue              被注释的元素必须为 true
@AssertFalse             被注释的元素必须为 false
@Min(value)              被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)                被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)          被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value)          被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max, min)             被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction)    被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past                 被注释的元素必须是一个过去的日期
@Future                被注释的元素必须是一个将来的日期
@Pattern(value)           被注释的元素必须符合指定的正则表达式
//-----------------下面是hibernate-valitor新增加的
@Email                 被注释的元素必须是电子邮箱地址
@Length                被注释的字符串的大小必须在指定的范围内
@NotEmpty               被注释的字符串的必须非空
@Range                 被注释的元素必须在合适的范围内
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章