springmvc数据的格式化及数据校验

一、数据的格式化

① 配置<mvc:annotation-driven></mvc:annotation-driven>

② 直接在要格式化的属性上加上格式化(这个格式是匹配你输入的数据的格式)

@DateTimeFormat(pattern="yyyy-MM-dd")

       privateDate birth;

       @NumberFormat(pattern="#,###,###.#")    //用#表示数值

       privateFloat salary;

格式化出错了怎么办?-----在目标方法中加上BindingResult参数,在调用其方法看其错误。

BindingResult父类是errors,所以BindingResult和errors都可以用于存储错误信息。

	@RequestMapping(value="/emp", method=RequestMethod.POST)
	public String save(@Valid Employee employee, Errors result, Map<String, Object> map){
		if(result.getErrorCount() > 0){
			System.out.println("出错了!");
			for(FieldError error:result.getFieldErrors()){
				System.out.println(error.getField() + ":" + error.getDefaultMessage());
			}   
	//若验证出错, 则转向定制的页面
			map.put("departments", departmentDao.getDepartments());
			return "input";

二、数据校验

1). 如何校验 ? 注解 ?

①  使用 JSR 303 验证标准

②  加入 hibernate validator 验证框架的 jar 包

③  在 SpringMVC 配置文件中添加 <mvc:annotation-driven/>

④  需要在 bean 的属性上添加对应的注解(有很多注解,如@Email:必须是邮箱格式)

如在Employee类中的属性,      

@NotEmpty

                        private String lastName;

       ⑤. 在目标方法 bean 类型的前面添加 @Valid注解

public String save(@Valid Employee employee, Errors result, Map<String, Object> map){

⑥ 但是运行的时候回报错,是jar包的错误

解决:将hibernatevalidator中的三个跟el相关的jar包复制到tomcat中,同时删除tomcat中的就可以了。其中,Errorsresult可以改为BindingResultresult

2). 验证出错转向到哪一个页面 ?

    注意: 需校验的 Bean 对象和其绑定结果对象或错误对象时成对出现的,它们之间不允许声明其他的入参。

public String handle91(@Valid User user, BingingResult userBindingResult, String sessionId, ModeluMap, mm, @Valid Dept dept, Errors deptErrors){

user和其绑定结果的对象及dept的其绑定结果的对象各自中间不能声明其他的入参。

3). 错误消息 ? 如何显示, 如何把错误消息进行国际化

显示:<form:errors path="*"></form:errors>   //显示所有的错误信息

或者可以在每个字段后面显示其错误,不过path要和这个字段名相同。

国际化:

①  springmvc.xml配置

②  在i18n.properties中

编写的格式是:校验注解名.请求域中对象名.属性名,如:

NotEmpty.employee.lastName=^^LastName\u4E0D\u80FD\u4E3A\u7A7A.



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值