• 数据格式化


    将时间字符串转换为Date对象除了使用数据类型转换器外还可以通过数据格式化方式实现:

    @DateTimeFormat注解可对java.util.Date、java.util.Calendar、java.long.Long时间类型进行标注:

            pattern 属性:类型为字符串。指定解析/格式化字段数据的模式,如:yyyy-MM-ddhh:mm:ss

            ISO属性:指定解析/格式化字段数据的ISO模式,包括四种:ISO.NONE(默认值,不使用)、ISO.DATE(yyyy-MM-dd) 、ISO.TIME(hh:mm:ss.SSSZ)、ISO.DATE_TIME(yyyy-MM-ddhh:mm:ss.SSSZ)

            style 属性:字符串类型。通过样式指定日期时间的格式,由两位字–符组成,第一位表示日期的格式,第二位表示时间的格式:S:短日期/时间格式、M:中日期/时间格式、L:长日期/时间格式、F:完整日期/时间格式、-:忽略日期或时间格式

    @NumberForma注解t可对类似数字类型的属性进行标注,它拥有两个互斥的属性:

            pattern属性:自定义样式,如patter="#,###";

            style属性:指定样式类–型,包括三种:Style.NUMBER(正常数字类型)、Style.CURRENCY(货币类型)、Style.PERCENT(百分数类型)

    我们在controller层要处理好格式不对的错误提示:

     

    @Controller
    public class UserInfoController {
    
        @RequestMapping("/userinfo/add.do")
       //
    BindingResult中保存了类型转换及格式化相关的错误信息
       public String add(UserInfo userInfo,BindingResult result){    
            if(result.getErrorCount()>0){
                for(ObjectError error: result.getAllErrors()){
                    System.out.println(error.getDefaultMessage());
                }
                return "userinfo/error";
            }
            
            return "userinfo/ok";
        }
    
    }

    接下来我们用上述两个注解给vo类对应属性添加格式:

    publicclass UserInfo {
    
        @DateTimeFormat(pattern="yyyy-MM-dd")
        private Date birth;
        @NumberFormat(pattern="#,###,###.")
        private Float salary;
        
        //...省略getter和setter方法...
    
    }

    当我们在表单页获取了上述格式数据,就会自动转换为date类和int类

    比如我们输入

    就会输出

    这就是数据格式化注解的作用,当我们要同时使用注解和类型转换器时,我们可以使用

    FormattingConversionServiceFactroyBean

    使用自定义类型转换器时需要通过org.springframework.context.support.ConversionServiceFactoryBean的converters属性注册该类型转换器,此时<mvc:annotation-driven/>默认创建的ConversionService实例不再org.springframework.format.support.DefaultFormattingConversionService对象,而是org.springframework.core.convert.support.DefaultConversionService对象,无法使用@DateTimeFormat和@NumberFormat注解,为了解决这一问题需要将org.springframework.context.support.ConversionServiceFactoryBean替换成org.springframework.context.support.ConversionServiceFactoryBean,如下配置:

    <beanid="conversionService"class="org.springframework.context.support.ConversionServiceFactoryBean">
        <propertyname="converters">
            <set>
                <refbean="dateConverter"/>
            </set>
        </property>
    </bean>
        
    <mvc:annotation-drivenconversion-service="conversionService"></mvc:annotation-driven>

     

  • 相关阅读:
    测试本地node包
    webpack4+react多页面架构
    身为前端开发工程师,你需要了解的搜索引擎优化SEO.
    代码改变世界 | 如何封装一个简单的 Koa
    云计算系统測试之技术概念
    Cocos2d-x3.0 从代码中获取cocostudio编辑的UI控件
    Spring使用HibernateDaoSupport操作数据
    gitlab一键安装 笔记
    【TCP/IP】IP路由选择
    ios网络学习------3 用非代理方法实现异步post请求
  • 原文地址:https://www.cnblogs.com/yimengxianzhi/p/12363691.html
Copyright © 2020-2023  润新知