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

      

  • 相关阅读:
    PHP 获取请求里的 header字段以及发送header
    宝塔链接数据库
    链表中头结点和头指针
    git How to resolve a Git “CONFLICT (modify/delete)”?
    yii 执行mysql:既要添加数据又要更新数据
    recv() failed (104: Connection reset by peer) while reading response header from upstream
    Linux磁盘空间满了,定位到mysql日志,删除
    mysql 字符乱码
    php message queue
    CGI 、fastcgi、php-cgi、php-fpm
  • 原文地址:https://www.cnblogs.com/yanqin/p/5772168.html
Copyright © 2020-2023  润新知