数据验证和JSR303
数据格式化
日期类:Employee.java添加birth字段,setter/getter并重写toString.在录入页面展现
输入abcccccccccccc看看
如何解决
标配<mvc:annotation-driven>
生日目标属性上添加注解并设定格式:@DateTimeFormat(pattern="yyyy-MM-dd")
数字类:@NumberFormat
字符格式数字串,试试1,234.8
400报错,参数不合适
原理:FormattingConversionServiceFactroyBean
回顾我们的自定义转化器
<mvc:annotation-driven conversion-service="conversionServiceFactoryBean"></mvc:annotation-
driven><bean id="conversionServiceFactoryBean"
class="org.springframework.context.support.ConversionServiceFactoryBean"><property name="converters"><list><ref bean="employeeConvert"/><!-- 注意小写类名首字母和名称 --></list></property></bean>
转换+格式化
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven><bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><property name="converters"><list><ref bean="employeeConvert"/></list></property></bean>
bindingResult添加出错信息
@RequestMapping(value="/emp",method=RequestMethod.POST)public String save(Employee employee,BindingResult bindingResult){System.out.println(employee.toString());if(bindingResult != null && bindingResult.getFieldErrorCount()>0){List<FieldError> fieldErrors = bindingResult.getFieldErrors();for (FieldError fieldError : fieldErrors){System.out.println(fieldError.getField()+"\t"+fieldError.getDefaultMessage());}throw new RuntimeException("数据出错......");}employeeDao.save(employee);return "redirect:/emps";}
生日、薪水输入abc字符串试试
后台会打印对应出错提示
数据的校验提出的问题
how:添加注解
校验出问题了该转到那个提示页面?
如何将错误信息国际化并放在出错录入字段后面?
JSR303数据验证
环境搭建及演示
1. 添加符合HibernateValidator验证框架的jar包
2. 添加注解<mvc:annotation-driven></mvc:annotation-driven>会默认装配好一个 LocalValidatorFactoryBean
3. Employee.java中添加Field验证要求的相关注解,比如名字不为空、email格式要合法等
4. Save方法对应的POJO参数前面添加@Valid
public String save(@Valid Employee employee,BindingResult bindingResult
录入信息时,lastName不填写和email故意填错
5. 需校验的 Bean对象和其绑定结果对象或错误对象时成对出现的,它们之间不允许声明其他的入参
6. 出错误后重新回到录入页面(Map带性别、部门参数信息)
@RequestMapping(value="/emp",method=RequestMethod.POST)public String save(@Valid Employee employee,BindingResult bindingResult,Map<String,Object> map){if(bindingResult.getErrorCount()>0){System.out.println("录入信息出错了......");List<FieldError> list = bindingResult.getFieldErrors();for (FieldError fieldError : list){System.out.println(fieldError.getField()+"\t"+fieldError.getDefaultMessage());//出错后跳转回录入页面map.put("departments",departmentDao.getDepartments());map.put("genders", getGenderUtils());return "input";}}System.out.println(employee.toString());employeeDao.save(employee);return "redirect:/emps";}
显示:每个字段后面用
<form:errors path="XXX字段"></form:errors>
7. 对于使用tomcat6的同学提醒
页面上显示错误消息
显示:每个字段后面用<form:errors path="XXX字段"></form:errors>
定制
新建i18n.properties
注解名+类名+需要限制的field
NotEmpty.employee.lastName
Email.employee.email
配置国际化资源文件在springmvc相关配置文件里面
<!--国际化信息 配置 --><bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource"><property name="basename" value="i18n"/><!-- 国际化信息所在的文件名 --></bean>
数据验证和JSR303相关推荐
- Spring Boot 框架学习笔记(二)(配置文件与数据注入 yaml基本语法 JSR303数据验证 多环境切换 )
Spring Boot 框架学习笔记(二) 六.appliaction.properties配置与数据注入 6.1 `@Value`注解 测试注入数据 读取输入流 6.2 读取配置文件数据注入 单文件 ...
- 自定义注解做数据验证
为了工作也为了更加深入了解掌握java注解的使用,决定自定义注解来实现数据验证. 最开始也考虑使用jsr-303规范来实现功能,但是对于开发人员来说比较累,因为要去实体类对象中添加验证字段注解,而且要 ...
- springmvc数据验证
当提交表单时,前台js会做一些验证,某些情况下后台验证也是必不可少的. 今天实现了一个JSR-303规范的数据验证. 使用jar包:hibernate-validator-4.3.0.Final.ja ...
- 注解形式控制器 数据验证,类型转换(3)
7.4.数据验证 7.4.1.编程式数据验证 Spring 2.x提供了编程式验证支持,详见[4.16.2 数据验证]章节,在此我们重写[4.16.2.4.1.编程式验证器]一节示例. (1.验证器实 ...
- 注解形式控制器 数据验证,类型转换
7.1.简介 在编写可视化界面项目时,我们通常需要对数据进行类型转换.验证及格式化. 一.在Spring3之前,我们使用如下架构进行类型转换.验证及格式化: 流程: ①:类型转换:首先调用Proper ...
- SpringBoot 轻松搞定数据验证 (一)
感谢作者: http://www.spring4all.com/article/1224 对于任何一个应用而言,客户端做的数据有效性验证都不是安全有效的,而数据验证又是一个企业级项目架构上最为基础的功 ...
- SpringMVC学习系列(6) 之 数据验证
在系列(4).(5)中我们展示了如何绑定数据,绑定完数据之后如何确保我们得到的数据的正确性?这就是我们本篇要说的内容 -> 数据验证. 这里我们采用Hibernate-validator来进行验 ...
- SpringMVC学习系列(5) 之 数据验证
原文地址 http://www.cnblogs.com/liukemng/p/3738055.html 这里我们采用Hibernate-validator来进行验证,Hibernate-validat ...
- SpringMVC数据验证——第七章 注解式控制器的数据验证、类型转换及格式化——SpringMVC
7.4.数据验证 7.4.1.编程式数据验证 Spring 2.x提供了编程式验证支持,详见[4.16.2 数据验证]章节,在此我们重写[4.16.2.4.1.编程式验证器]一节示例. (1.验证器实 ...
最新文章
- 单体模式singleton
- 学习java第一步_Spring Boot 学习第一步(搭建初步环境)
- 108. Convert Sorted Array to Binary Search Tree
- MFC中模态对话框和非模态对话框的差别
- 程序员的绩效到底是应该衡量项目,还是改 Bug 量?
- like mybatis 用法_Mybaits中Like 的使用方式以及一些注意点
- Java计算加权平均成绩
- android模拟登陆,android,httpclient_Android模拟登录数据获取不了?无法传递?,android,httpclient,模拟登录 - phpStudy...
- 登入联机服务器失败怎么 修复,元气骑士连接服务器失败 连接不上网络怎么办...
- 【万字拆解】ChatGPT各项能力的起源
- 美国宾州计算机学校,美国留学,看看宾州有哪些顶尖学校?
- Python发送邮件(demo)
- win10英雄联盟登陆服务器未响应怎么办,Win10系统中登陆LOL失败怎么办
- 每日一语20130925
- mybatis常用(动态)SQL操作样例
- math: 卡尔曼滤波算法原理以及python实例
- 内网计算机游戏不被检测,两台未联网的Win7电脑建立局域网游戏的方法
- C++入门学习(黑马程序员课程讲义)——第一阶段
- 基于Python的聊天室
- batch_size的含义