springMVC之数据校验

表单如下,注册qq为例

<form action="<%=basePath %>/register2.shtml" method="post">

<table>

    <tr>

<td>昵称</td>

<td>

            <input type="text" name="nick" placeholder="请输入4-10位汉字">

            <span style="color:red;">${requestScope.errorMessage.nick }</span>

        </td>

</tr>

<tr>

    <td>密码</td>

    <td>

                <input type="password" name="password" placeholder="请输入3-6位数字、字母、下划线组合">${requestScope.errorMessage.password }

            </td>

</tr>

<tr>

    <td>手机号码</td>

    <td>

                <input type="text" name="phone" placeholder="请输入正确的手机格式">

            </td>

</tr>

<tr>

    <td>邮箱</td>

    <td><input type="text" name="email" placeholder="请输入正确的邮箱格式"></td>

</tr>

<tr>

    <td>年龄</td>

    <td><input type="text" name="age" placeholder="请输入数字"></td>

</tr>

<tr>

    <td colspan="2"><input type="submit" value="注册"><input type="reset" value="重置"></td>

</tr>

    </table>

</form>


第一步:导入校验的jar包

第二步:springmvc.xml中配置

<!-- 配置hibernate-validator -->

     <mvc:annotation-driven validator="validator"/>

     <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">

     <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />

     </bean>

第三步:在接收参数的实体类前添加校验的注解

public class QQ {

    @NotNull(message = "亲,您没有填写昵称")

    @Pattern(regexp = "[\\u4e00-\\u9fa5]{4,10}", message = "*昵称必须为4-10位汉字")

    private String nick;// 昵称


    @Pattern(regexp = "\\w{3,6}", message = "*密码必须为3-6位字母、数字或者下划线组合")

    private String password;// 密码


    private String phone;// 手机号


    @Email(message = "对不起,您输入的邮箱格式有误")

    private String email;// 邮箱


    @Min(value = 1, message = "亲,您还没出生吧")

    @Max(value = 150, message = "亲,您还没挂么")

    private Integer age;// 年龄(1-150)

第四步:在Controller的实体类方法前加@valid注解,并通过BindingResult封装错误提示信息。

 @RequestMapping("register1")

    public String register2(@Valid QQ qqInfo, BindingResult errorResult, Model model) {

        // 调用校验数据的工具类

        Map<String, Object> resultMap = Validator.fieldValidate(errorResult);

        if (resultMap == null) {// 数据正确

            return "front/regiter_success.jsp";

        } else {// 数据错误

            model.addAttribute("errorMessage", resultMap);

            return "front/register.jsp";

        }

    }


  1. @AssertTrue //用于boolean字段,该字段只能为true  
  2. @AssertFalse//该字段的值只能为false  
  3. @CreditCardNumber//对信用卡号进行一个大致的验证  
  4. @DecimalMax//只能小于或等于该值  
  5. @DecimalMin//只能大于或等于该值  
  6. @Digits(integer=2,fraction=20)//检查是否是一种数字的整数、分数,小数位数的数字。  
  7. @Email//检查是否是一个有效的email地址  
  8. @Future//检查该字段的日期是否是属于将来的日期  
  9. @Length(min=,max=)//检查所属的字段的长度是否在min和max之间,只能用于字符串  
  10. @Max//该字段的值只能小于或等于该值  
  11. @Min//该字段的值只能大于或等于该值  
  12. @NotNull//不能为null  
  13. @NotBlank//不能为空,检查时会将空格忽略  
  14. @NotEmpty//不能为空,这里的空是指空字符串  
  15. @Null//检查该字段为空  
  16. @Past//检查该字段的日期是在过去  
  17. @Size(min=, max=)//检查该字段的size是否在min和max之间,可以是字符串、数组、集合、Map等  
  18. @URL(protocol=,host,port)//检查是否是一个有效的URL,如果提供了protocol,host等,则该URL还需满足提供的条件  
  19. @Valid//该注解只要用于字段为一个包含其他对象的集合或map或数组的字段,或该字段直接为一个其他对象的引用,  
  20.         //这样在检查当前对象的同时也会检查该字段所引用的对象


猜你喜欢

转载自blog.csdn.net/fukua2017/article/details/80760570