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