JSR303校验 —— hibernate-validator实现

本文是Spring+SpringMVC+Mybatis项目,但JSR303校验使用的是Hibernate提供的实现。

1. 加入Maven

<!-- 
JSR303数据校验支持:tomcat7及以上的服务器
 -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.4.1.Final</version>
</dependency>
2. 要验证的实体类中加入验证规则

public class Employee {
    private Integer empId;
    @Pattern(regexp=("(^[a-zA-Z0-9_-]{6,16}$)|(^[\\u2E80-\\u9FFF]{2,5}$)"),message="用户名必须合法吧")
    private String empName;
    private String gender;
    @Pattern(regexp=("^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$"),message="邮箱格式必须合法吧!")
    private String email;
    private Integer dId;
}
3. 方法上加入@Valid注解和" BindingResult result "用来接收验证结果,将验证结果返回前端显示即可。

/**
 * 员工保存
 * 1. 支持JSR303校验
 * 2. 导入Hibernate-validator
 */
@RequestMapping(value="/emp",method=RequestMethod.POST)
@ResponseBody
public Msg saveEmp(@Valid Employee employee,BindingResult result){
	if(result.hasErrors()){
		//校验失败,返回失败,在模态框中显示失败的错误信息
		List<FieldError> errors = result.getFieldErrors();
		Map<String, Object> map = new HashMap<String, Object>();
		for(FieldError fieldError : errors){
			System.out.println("错误的字段名:"+fieldError.getField());
			System.out.println("错误信息:"+fieldError.getDefaultMessage());
			map.put(fieldError.getField(), fieldError.getDefaultMessage());
		}
		return Msg.fail().add("errorField", map);
	}else{
		employeeService.saveEmp(employee);
		return Msg.success();
	}
}
4. 前端显示

//2. 保存
$.ajax({
	url:"${ctx}/emp",
	type:"POST",
	data:$("#empAddModal form").serialize(),
	success:function(data){
		if(data.code==100){
			//1. 关闭模态框 
			$("#empAddModal").modal("hide");
			//2. 来到最后一页
			to_page(9999);
		}else{
			//显示失败信息
			//有哪个字段的错误信息就显示哪个字段
			if(undefined != data.extend.errorField.email){
				//显示邮箱错误信息
				show_validate_msg("#email_add_input","error",data.extend.errorField.email);
			}
			if(undefined != data.extend.errorField.empName){
				show_validate_msg("#empName_add_input","error",data.extend.errorField.empName);
			}
		}
		
	},
	error:function(data){
		
	}
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HibernateValidatorJSR303的参考实现使用指南.pdf JSR 303 的参考实现 使用指南 由 Hardy Ferentschik和Gunnar Morling and thanks to Shaozhuang Liu 4.3.1.Final 版权 © 2009 - 2011 Red Hat, Inc. & Gunnar Morling June 20, 2011 序言 1. 开始入门 1.1. 第一个Maven项目 1.2. 添加约束 1.3. 校验约束 1.4. 更进一步 2. Validation step by step 2.1. 定义约束 2.1.1. 字段级(field level) 约束 2.1.2. 属性级别约束 2.1.3. 类级别约束 2.1.4. 约束继承 2.1.5. 对象图 2.2. 校验约束 2.2.1. 获取一个Validator的实例 2.2.2. Validator中的方法 2.2.3. ConstraintViolation 中的方法 2.2.4. 验证失败提示信息解析 2.3. 校验组 2.3.1. 校验组序列 2.3.2. 对一个类重定义其默认校验组 2.4. 内置的约束条件 2.4.1. Bean Validation constraints 2.4.2. Additional constraints 3. 创建自己的约束规则 3.1. 创建一个简单的约束条件 3.1.1. 约束标注 3.1.2. 约束校验器 3.1.3. 校验错误信息 3.1.4. 应用约束条件 3.2. 约束条件组合 4. XML configuration 4.1. validation.xml 4.2. 映射约束 5. Bootstrapping 5.1. Configuration 和 ValidatorFactory 5.2. ValidationProviderResolver 5.3. MessageInterpolator 5.3.1. ResourceBundleLocator 5.4. TraversableResolver 5.5. ConstraintValidatorFactory 6. Metadata API 6.1. BeanDescriptor 6.2. PropertyDescriptor 6.3. ElementDescriptor 6.4. ConstraintDescriptor 7. 与其他框架集成 7.1. OSGi 7.2. 与数据库集成校验 7.3. ORM集成 7.3.1. 基于Hibernate事件模型的校验 7.3.2. JPA 7.4. 展示层校验 8. Hibernate Validator Specifics 8.1. Public API 8.2. Fail fast mode 8.3. Method validation 8.3.1. Defining method-level constraints 8.3.2. Evaluating method-level constraints 8.3.3. Retrieving method-level constraint meta data 8.4. Programmatic constraint definition 8.5. Boolean composition for constraint composition 9. Annotation Processor 9.1. 前提条件 9.2. 特性 9.3. 配置项 9.4. 使用标注处理器 9.4.1. 命令行编译 9.4.2. IDE集成 9.5. 已知问题 10. 进一步阅读

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值