• springMVC-数据的格式化


      1.配置annotation-driven

      <mvc:annotation-driven ></mvc:annotation-driven>

    2.在实体类上加上@NumberForma这样的注解

        @NumberFormat(pattern="#,###,###.#")
        private Float price;
        @DateTimeFormat(pattern="yyyy-MM-dd")
        private Date productionDate;

    这样就可以了

    数据格式化

    * 对属性对象的输入输出进行格式化,从其本质上讲依然属于"类型转换"的范畴

    * Spring在格式化模块中定义了一个实现ConversionService接口的

    FormattingConversionService实现类,该实现类扩展了GenericConversionService

    ,因此它既具有类型转换的功能,有具有格式话的功能

    * FormattingConversionServiceFactoryBean工厂类,后者用于在Spring上下

    中构造前者

    -FormattingConversionServiceFactoryBean内部已经注册了

    NumberFormatAnnotationFormatterFactory:支持对数字类型的

    属性使用@NumberFormat注解

    -JodaDateTimeFormatterAnnotationFormatterFactory:支持对日期类型的属性使用

    @DateTimeFormat注解

    装备了FormattingConversionServiceFactoryBean后,就可以在SpringMVC入参

    绑定及模型数据输出时使用注解驱动了<mvc:annotation-driven/>

    默认创建的ConversionService实例即为

    FormattinConversionServiceFactorybean

    日期格式化

    @DateTimeFormat注解可以对java.util.Date,

    java.util.Calender.java.long.Long时间类型进行标注:

    -pattern属性:类型为字符串,指定解析/格式化字段数据的模式,

    如:"yyyy-MM-dd hh:mm:ss"

    -iso属性:类型为DateTimeFormat.ISO.指定解析.格式化字段数据的ISO模式

    ,包括四种:ISO.NONE(不使用,)--默认.

    ISO.DATE(yyyy-MM-dd)

    ISO.TIME(hh:mm:ss.SSSZ).ISO.DATE(yyyt-MM-dd hh:mm:ss.SSSZ)

    -style 属性:字符串类型,通过演示指定日期时间的格式,由两位字符组成,

    第一位镖师日期的额格式化,第二位表式时间的格式,S:短日期/时间格式,

    M:中日期/时间格式.L:长日期/时间格式.F完整日期/时间格式.

    -忽略日期或者时间格式

    之前配置了一个ConversionService,但是现在已经用不了了

     <!--配置ConversionService  -->
        <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
            <property name="converters">
                <set>
                <ref bean="procuctConverter"/>
                </set>
            </property>
        </bean>

    但是可以换成org.springframework.format.support.FormattingConversionServiceFactoryBean

    使用了这个之后既可以用自己的 可以用Spring的提供的格式化

    现在考虑一个问题,如果出错了怎么办

    使用BindingResult 注意BindingResult必须和他绑定的变量紧挨着

    public String saveProduct(@ModelAttribute Product product,
               BindingResult bindingResult, Model model) {
            if(bindingResult.getErrorCount() > 0)
            {
                System.out.println("出错了");
                for(FieldError  error : bindingResult.getFieldErrors())
                {
                    System.out.println(error.getField() +" : "+error.getDefaultMessage());
                }
            }
       }
  • 相关阅读:
    ES5中改变this指向的三种方法
    数组的高阶方法map filter reduce的使用
    webpack打包报错 ERROR in ./js/ww.js from UglifyJs Unexpected token keyword «function», expected punc «,» [src/page/ww/view/xx/xx.vue:119,0][./js/ww.js:55218,17]
    自动化接口测试平台搭建之路
    多媒体开发(10):提取图片以及位图保存
    多媒体开发(9):我是声音
    多媒体开发(8):调试FFmpeg
    多媒体开发(7):编译Android与iOS平台的FFmpeg
    python应用(3):启用集成开发工具pycharm
    python应用(2):写个python程序给自己用
  • 原文地址:https://www.cnblogs.com/rocky-AGE-24/p/5225826.html
Copyright © 2020-2023  润新知