1. 程式人生 > >SpringMVC配置全域性日期轉換器

SpringMVC配置全域性日期轉換器

spring3.0配置日期轉換可以通過配置自定義實現WebBingingInitializer介面的一個日期轉換類來實現,方法如下

轉換類:

 public class DateConverter implements WebBindingInitializer {    

   public void initBinder(WebDataBinder binder, WebRequest request) {
         SimpleDateFormat df = newSimpleDateFormat("yyyy-MM-dd");    
        binder.registerCustomEditor(Date.class, new
CustomDateEditor(df, false)); } }

在spring-servlet.xml當中的進行註冊:

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">    
        <!-- 日期格式轉換 -->    
        <property name="webBindingInitializer">    
            <bean
class="DateConverter" />
</property> </bean>

spring3.1.1的處理進行調整,所以按照3.0的寫法在3.1.1裡面是無效的,正確的寫法如下

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">    
        <property name="converters">    
            <list
> <bean class="com.doje.XXX.web.DateConverter" /> </list> </property> </bean>

其中class=”com.doje.XXX.web.DateConverter” 是自定義的日期轉換器類,
下一步:
需要修改spring service context xml配置檔案中的annotation-driven,增加屬性conversion-service指向新增的conversionService bean。

<mvc:annotation-driven conversion-service="conversionService" />

自定義的converter如下

 public class DateConverter implements Converter<String, Date> {    
    @Override    
    public Date convert(String source) {    
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");    
        dateFormat.setLenient(false);    
        try {    
            return dateFormat.parse(source);    
        } catch (ParseException e) {    
            e.printStackTrace();    
        }           
        return null;    
    }