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()); }
        }
   }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM