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

      

  • 相关阅读:
    使用Mxnet基于skip-gram模型实现word2vect
    【快学springboot】SpringBoot整合Mybatis Plus
    面试官:说说Spring中的事务传播行为
    「快学SpringBoot」配置文件的加载顺序和配置项默认值设置
    「快学springboot」SpringBoot整合freeMark模板引擎
    「快学springboot」SpringBoot多环境配置文件
    为什么阿里规约手册要求谨慎使用Arrays.asList方法
    「快学Docker」Docker简介、安装和Hello World实现
    Java中的transient关键字
    IDEA设置窗口标签换行显示
  • 原文地址:https://www.cnblogs.com/yanqin/p/5772168.html
Copyright © 2011-2022 走看看