表单如下,注册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) {
// 调用校验数据的工具类
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. //这样在检查当前对象的同时也会检查该字段所引用的对象
|
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。