zoukankan      html  css  js  c++  java
  • 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"/>
    

      

  • 相关阅读:
    静水流深,沧笙踏歌
    iOS 进阶 第二十二天(0603)
    iOS 进阶 第二十一天(0531)
    iOS 进阶 第二十天(0520)
    iOS 进阶 第十九天(0423)
    iOS 进阶 第十八天(0423)
    iOS 进阶 第十七天(0420)
    iOS 进阶 第十六天(0419)
    iOS 进阶 第十五天(0417)
    iOS 进阶 第十四天(0416)
  • 原文地址:https://www.cnblogs.com/yanqin/p/5772168.html
Copyright © 2011-2022 走看看