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

      

  • 相关阅读:
    [转载]Oracle 11g R1中资本管理器增强(2)
    [转载]Oracle监听器安装与设置(2)
    [转载]Oracle 11g R1中资源管理器加强(3)
    [转载]Oracle能否吸收领跑数据库市场?(2)
    [转载]怎样高效删除Oracle数据库中的反双数据
    [转载]Oracle 11g R1下的主动内存处置惩罚(1)
    [转载]Oracle假造公用数据控制设备使用
    [转载]Oracle可否担当领跑数据库市场?(1)
    [转载]将oracle 9i备份文件导入oracle 8i的方式简介
    OpenSuSE 11.1内行装置教程(贴图版)
  • 原文地址:https://www.cnblogs.com/yanqin/p/5772168.html
Copyright © 2011-2022 走看看