springmvc对于前台date类型注意点

springmvc,可以自动将数据注入到: “name”值相同,便注入,比如String Integer 还有我们自定义的bean,比如User。

但是date类型的数据,如果前台传的是用"/"划分的日期类型,便能注入。

但是如果前台传过来是"-"划分的日期类型,不能自动注入,会报400错误。

在form表单中,input type是date,那么表单传递的date数据是"-"划分的。

如果想支持,“-”划分的date类型数据,可以自定义转换器。

方法一:不用annotation-driven

public class DateEditor extends PropertyEditorSupport {
    @Override
    public String getAsText() {
        return super.getAsText();
    }

    @Override
    public void setAsText(String text) throws IllegalArgumentException {
        String pattern;
        SimpleDateFormat dateFormat = new SimpleDateFormat();
        if(text.indexOf("-")==-1){
            pattern = "yyyy/MM/dd";
        }else{
            pattern = "yyyy-MM-dd";
        }
        System.out.println("pattern = " + pattern);
        dateFormat.applyPattern(pattern);
        try {
            setValue(dateFormat.parse(text));
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

  

public class MyWebBind implements WebBindingInitializer {
    @Override
    public void initBinder(WebDataBinder webDataBinder, WebRequest webRequest) {
        webDataBinder.registerCustomEditor(Date.class,new DateEditor());
    }
}

  

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="webBindingInitializer">
            <bean class="com.core.MyWebBind"></bean>
        </property>
    </bean>

  

方法二:用annotation-driven

public class DateConverter implements Converter<String, Date> {
    public Date convert(String source) {
        String pattern;
        SimpleDateFormat dateFormat = new SimpleDateFormat();
        if(source.indexOf("-")==-1){
            pattern = "yyyy/MM/dd";
        }else{
            pattern = "yyyy-MM-dd";
        }
        System.out.println("pattern = " + pattern);
        dateFormat.applyPattern(pattern);
        try {
            return dateFormat.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
}

  

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <util:list>
                <bean class="com.core.DateConverter"/>
            </util:list>
        </property>
    </bean>
    <mvc:annotation-driven conversion-service="conversionService"/>

  

原文地址:https://www.cnblogs.com/yanqin/p/5772168.html