zoukankan      html  css  js  c++  java
  • springboot date接收参数

    使用springboot框架对日期类型进行操作,遇到无法保持的情况,一开始报400的错误(解决方法),解决之后日期类型无法保存到数据库,为了解决这个问题,设置了个全局date转换器。

    配置方法

    1、新增一个转换类

    新增一个string转换成date的类,实现Converter接口,代码如下:

    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.springframework.core.convert.converter.Converter;
    import org.springframework.util.StringUtils;
    
    public class StringToDateConverter implements Converter<String, Date> {
    
        private static final String dateFormat = "yyyy-MM-dd HH:mm:ss";
        private static final String shortDateFormat = "yyyy-MM-dd";
    
        @Override
        public Date convert(String value) {
    
            if(StringUtils.isEmpty(value)) {
                return null;
            }
    
            value = value.trim();
    
            try {
                if(value.contains("-")) {
                    SimpleDateFormat formatter;
                    if(value.contains(":")) {
                        formatter = new SimpleDateFormat(dateFormat);
                    }else {
                        formatter = new SimpleDateFormat(shortDateFormat);
                    }
    
                    Date dtDate = formatter.parse(value);
                    return dtDate;              
                }else if(value.matches("^\d+$")) {
                    Long lDate = new Long(value);
                    return new Date(lDate);
                }
            } catch (Exception e) {
                throw new RuntimeException(String.format("parser %s to Date fail", value));
            }
            throw new RuntimeException(String.format("parser %s to Date fail", value));
        }
    
    
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    2、注册转换器

    新增一个类,配置为Configuration,把第一步新增的类注册为转换器,代码如下:

    import javax.annotation.PostConstruct;
    
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.convert.support.GenericConversionService;
    import org.springframework.web.bind.support.ConfigurableWebBindingInitializer;
    import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
    
    @Configuration
    public class WebConfigBeans {
    
        @Autowired
        private RequestMappingHandlerAdapter handlerAdapter;
    
        /**
         * 增加字符串转日期的功能
         */
    
        @PostConstruct
        public void initEditableAvlidation() {
    
            ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer)handlerAdapter.getWebBindingInitializer();
            if(initializer.getConversionService()!=null) {
                GenericConversionService genericConversionService = (GenericConversionService)initializer.getConversionService();           
    
                genericConversionService.addConverter(new StringToDateConverter());
    
            }
    
        }
    
    }
  • 相关阅读:
    当Django模型迁移时,报No migrations to apply 问题时
    django--各个文件的含义
    django--创建项目
    1013. Battle Over Cities (25)
    1011. World Cup Betting (20)
    1009. Product of Polynomials (25)
    1007. Maximum Subsequence Sum (25)
    1006. Sign In and Sign Out (25)
    1008. Elevator (20)
    1004. Counting Leaves (30)
  • 原文地址:https://www.cnblogs.com/wirr/p/9522561.html
Copyright © 2011-2022 走看看