spring boot 注册类型转换

spring boot注册一个全局的类型转换器,转换表单中的string 到Date

@Configuration
public class WebConfig {

    // IMPORTANT: keep the order
    private final static String[] dateFormats = {
            "EEE, d MMM yyyy HH:mm:ss z",
            "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "yyyy-MM-dd HH:mm:ss.SSSZ",
            "yyyy-MM-dd HH:mm:ssZ",
            "yyyy-MM-dd HH:mm:ss.SSS",
            "yyyy-MM-dd HH:mm:ss"};

    @Autowired
    private RequestMappingHandlerAdapter handlerAdapter;

    @PostConstruct
    public void addConversionConfig() {
        ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer)handlerAdapter.getWebBindingInitializer();
        if (initializer.getConversionService() != null) {
            GenericConversionService genericConversionService = (GenericConversionService)initializer.getConversionService();
            genericConversionService.addConverter(new StringToDateConverter());
        }
    }

    public class StringToDateConverter implements Converter<String, Date> {

        @Override
        public Date convert(String dateString) {
            Assert.hasText(dateString, "Null or emtpy date string");
            // Supported date formats:
            // EEE, d MMM yyyy HH:mm:ss z          e.g. Fri, 20 Aug 2016 08:45:15 GMT
            // yyyy-MM-dd HH:mm:ss.SSSZ            e.g. 2016-08-19 17:36:20.235+0800
            // yyyy-MM-dd'T'HH:mm:ss.SSSZ          e.g. 2016-08-19T17:36:20.235+0800
            // yyyy-MM-dd HH:mm:ssZ                e.g. 2016-08-19 17:36:20+0800
            // yyyy-MM-dd HH:mm:ss.SSS (UTC time), e.g. 2016-08-19 09:36:20.235
            // yyyy-MM-dd HH:mm:ss (UTC time),     e.g. 2016-08-19 09:36:20

            Date date = DateUtils.parseDate(dateString, dateFormats);
            if (date == null) {
                String errMsg = String.format("Failed to convert [%s] to [%s] for value '%s'", String.class.toString(), Date.class.toString(), dateString);
                throw new IllegalArgumentException(errMsg);
            }

            return date;
        }
    }
}

猜你喜欢

转载自18939512985.iteye.com/blog/2319411