zoukankan      html  css  js  c++  java
  • 数据格式化

    将时间字符串转换为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>

     

  • 相关阅读:
    Android UI性能优化详解
    Android开发中一些被冷落但却很有用的类和方法
    Android开发:Translucent System Bar 的最佳实践
    让动画不再僵硬:Facebook Rebound Android动画库介绍
    Android Touch事件传递机制
    转载爱哥自定义View系列--Canvas详解
    Android最佳实践指南
    Android网络请求心路历程
    转载爱哥自定义View系列--文字详解
    ORM是什么?
  • 原文地址:https://www.cnblogs.com/yimengxianzhi/p/12363691.html
Copyright © 2011-2022 走看看