前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springmvc之数据的格式化

springmvc之数据的格式化

作者头像
西西嘛呦
发布2020-08-26 10:30:27
4320
发布2020-08-26 10:30:27
举报

当提交时,数据的格式化和转换是一起发生的,我们在前端输入的时间数据需要转换成springmvc里面的对象的类型的格式,不然会报:

首先在sprinbmvc配置文件里面添加:

代码语言:javascript
复制
    <mvc:annotation-driven></mvc:annotation-driven>

然后可以在相应属性上指定格式:

代码语言:javascript
复制
    @DateTimeFormat(pattern="yyyy-mm-dd")
    private Date birth;

此时再提交,就不会报4o4了,在控制台可以看到:

数据格式化:

  • 对属性对象的输入/输出进行格式化,从其本质上来说就是类型转换。
  • spring在格式化模块中定义了一个实现ConversionService接口的实现类,该实现类扩展了GenericConversionService,因此它既有类型转换的功能,又有格式化的功能。
  • FormattingConversionService拥有一个FormattingConversionServiceFactoryBean工厂类,后者用于在spring上下文中构造前者。
  • FormattingConversionServiceFactoryBean内部已经注册了:NumberFormatAnnotationFormatterFactory用于对数字类型属性使用NumberFormat注解,JodaDateTimeFormatAnnotationFormatterFactory用于对时间属性使用@DateTimeFormat注解。
  • 装配了FormattingConversionServiceFactoryBean后,就可以在springmvc入参绑定及模型数据输出时使用注解驱动了。<mvc:annotation-driver>默认创建的ConversionService实例即为FormattingConversionServiceFactoryBean。
  • @DateTimeFromat可对java.util.Date、java.util.Calendar和java.long.Long时间类型进行标注。

如果格式化失败,我们可以这么写:

代码语言:javascript
复制
    @RequestMapping(value="/emp",method=RequestMethod.POST)
    public String save(Employee employee, BindingResult result) {
        System.out.println("save-->"+employee);
        if (result.getErrorCount()>0) {
            System.out.println("出错了");
            for(FieldError error:result.getFieldErrors()) {
                System.out.println(error.getField()+":"+error.getDefaultMessage());
            }
        }
        employeeDao.save(employee);
        return "redirect:/emps";
    }

可以利用BindingResult来接受格式化错误消息,进行下一步处理。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档