SpringMVC----数据校验(22)

1.使用JSR303标准

      1.1  JSR 303 是 Java 为 Bean 数据合法性校验提供的标准框架,它已经包含在 JavaEE 6.0 中 .

      1.2  JSR 303 通过在 Bean 属性上标注类似于 @NotNull、@Max等标准的注解指定校验规则,

              并通过标准的验证接口对 Bean进行验证

   2.应为JSR303只是一个标准,所以如果想使用这套标准进行验证,需要有一个实现该标准的产品。

    Hibernate Validator验证框架

      2.1 Hibernate Validator 是 JSR 303 的一个参考实现,除支持所有标准的校验注解外,它还支持以下的扩展注解

      2.2 加入hibernate-validator的jar包

  3. 在spring.xml配置文件中添加  <mvc:annotation-driven></mvc:annotation-driven>

  4. 在需要验证的属性上添加对应的直接。

     

@NotEmpty  //不能为空
private String lastName;
@Email     //邮件
private String email;
@Past     //不能是过去的时间
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date birth;

      5.在目标方法bean类型的前面添加 @Valid 注解(注意解决jar包的冲突)。其中,由于配置了

         <mvc:annotation-driven></mvc:annotation-driven>会按照注解自动完成数据类型的转换和格式化,如果中间

        出现转换的错误,会自动将错误信息加入到 BindingResult该参数中,可以通过添加BindingResult参数,获取错误

         信息。

@RequestMapping(value="/emp",method=RequestMethod.POST)
public String save(@Valid Employee employee,BindingResult result){
	System.out.println(employee);
	if (result.getErrorCount() > 0) {
		for (FieldError error : result.getFieldErrors()) {
			System.out.println(error.getField() + ":"
					+ error.getDefaultMessage());
		}
	}
	employeeDao.save(employee);
	return "redirect:/emps";
}

  6. 如果验证出错,跳转到指定的页面。(返回到原来的填写页面,会自动回显内容,但是下拉列表框的内容需要放入map

        传到前台。)

@RequestMapping(value="/emp",method=RequestMethod.POST)
public String save(@Valid Employee employee,BindingResult result,Map<String,Object> map){
	       System.out.println(employee);
	if (result.getErrorCount() > 0) {
	 for (FieldError error : result.getFieldErrors()) {
		System.out.println(error.getField() + ":"+ error.getDefaultMessage());
	 }
	map.put("departments", departmentDao.getDepartments());
	 return "input";
	 }
	employeeDao.save(employee);
	return "redirect:/emps";
}

 

 

 

 

 

 

 

 

 

 

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值