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"/>
    

      

  • 相关阅读:
    E
    牛客比赛—身体训练
    前缀和例题
    欧拉函数模板
    3.30训练题
    poj1321棋盘问题
    记set学习
    B. K-th Beautiful String
    codeforces1293C
    LightOJ 1370 Bi-shoe and Phi-shoe
  • 原文地址:https://www.cnblogs.com/yanqin/p/5772168.html
Copyright © 2011-2022 走看看