数据格式化

日期类: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相关推荐

  1. Spring Boot 框架学习笔记(二)(配置文件与数据注入 yaml基本语法 JSR303数据验证 多环境切换 )

    Spring Boot 框架学习笔记(二) 六.appliaction.properties配置与数据注入 6.1 `@Value`注解 测试注入数据 读取输入流 6.2 读取配置文件数据注入 单文件 ...

  2. 自定义注解做数据验证

    为了工作也为了更加深入了解掌握java注解的使用,决定自定义注解来实现数据验证. 最开始也考虑使用jsr-303规范来实现功能,但是对于开发人员来说比较累,因为要去实体类对象中添加验证字段注解,而且要 ...

  3. springmvc数据验证

    当提交表单时,前台js会做一些验证,某些情况下后台验证也是必不可少的. 今天实现了一个JSR-303规范的数据验证. 使用jar包:hibernate-validator-4.3.0.Final.ja ...

  4. 注解形式控制器 数据验证,类型转换(3)

    7.4.数据验证 7.4.1.编程式数据验证 Spring 2.x提供了编程式验证支持,详见[4.16.2 数据验证]章节,在此我们重写[4.16.2.4.1.编程式验证器]一节示例. (1.验证器实 ...

  5. 注解形式控制器 数据验证,类型转换

    7.1.简介 在编写可视化界面项目时,我们通常需要对数据进行类型转换.验证及格式化. 一.在Spring3之前,我们使用如下架构进行类型转换.验证及格式化: 流程: ①:类型转换:首先调用Proper ...

  6. SpringBoot 轻松搞定数据验证 (一)

    感谢作者: http://www.spring4all.com/article/1224 对于任何一个应用而言,客户端做的数据有效性验证都不是安全有效的,而数据验证又是一个企业级项目架构上最为基础的功 ...

  7. SpringMVC学习系列(6) 之 数据验证

    在系列(4).(5)中我们展示了如何绑定数据,绑定完数据之后如何确保我们得到的数据的正确性?这就是我们本篇要说的内容 -> 数据验证. 这里我们采用Hibernate-validator来进行验 ...

  8. SpringMVC学习系列(5) 之 数据验证

    原文地址 http://www.cnblogs.com/liukemng/p/3738055.html 这里我们采用Hibernate-validator来进行验证,Hibernate-validat ...

  9. SpringMVC数据验证——第七章 注解式控制器的数据验证、类型转换及格式化——SpringMVC

    7.4.数据验证 7.4.1.编程式数据验证 Spring 2.x提供了编程式验证支持,详见[4.16.2 数据验证]章节,在此我们重写[4.16.2.4.1.编程式验证器]一节示例. (1.验证器实 ...

最新文章

  1. 单体模式singleton
  2. 学习java第一步_Spring Boot 学习第一步(搭建初步环境)
  3. 108. Convert Sorted Array to Binary Search Tree
  4. MFC中模态对话框和非模态对话框的差别
  5. 程序员的绩效到底是应该衡量项目,还是改 Bug 量?
  6. like mybatis 用法_Mybaits中Like 的使用方式以及一些注意点
  7. Java计算加权平均成绩
  8. android模拟登陆,android,httpclient_Android模拟登录数据获取不了?无法传递?,android,httpclient,模拟登录 - phpStudy...
  9. 登入联机服务器失败怎么 修复,元气骑士连接服务器失败 连接不上网络怎么办...
  10. 【万字拆解】ChatGPT各项能力的起源
  11. 美国宾州计算机学校,美国留学,看看宾州有哪些顶尖学校?
  12. Python发送邮件(demo)
  13. win10英雄联盟登陆服务器未响应怎么办,Win10系统中登陆LOL失败怎么办
  14. 每日一语20130925
  15. mybatis常用(动态)SQL操作样例
  16. math: 卡尔曼滤波算法原理以及python实例
  17. 内网计算机游戏不被检测,两台未联网的Win7电脑建立局域网游戏的方法
  18. C++入门学习(黑马程序员课程讲义)——第一阶段
  19. 基于Python的聊天室
  20. batch_size的含义

热门文章

  1. 【06】sass编译工具(弃)
  2. junit基础学习之-断言注解(3)
  3. Signal Slot in Qt
  4. Java多线程与并发控制
  5. iOS隐藏键盘的几种方式
  6. Android 编程下 px - dp 的相互转换
  7. jdk1.8新特性(五)——Stream
  8. Statement和PreparedStatement深入学习总结
  9. 【Hibernate】Hibernate基本原理及概念详解
  10. mysql学习-初识mysql