前端String类型绑定Date类型(全局配置)

import org.springframework.core.convert.converter.Converter;
import org.springframework.util.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author lixiao
 * @date 2019/8/7 14:57
 */
public class StringToDateConverter implements Converter<String, Date> {

    private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
    private static final String SHORT_DATE_FORMAT = "yyyy-MM-dd";
    private static final String DATE_FORMAT2 = "yyyy/MM/dd HH:mm:ss";
    private static final String SHORT_DATE_FORMAT2 = "yyyy/MM/dd";
    private static final String COLON = ":";
    private static final String BAR = "-";
    private static final String SLASH = "/";

    @Override
    public Date convert(String source) {
        if (StringUtils.isEmpty(source)) {
            return null;
        }
        source = source.trim();
        try {
            if (source.contains(BAR)) {
                return getDate(source, DATE_FORMAT, SHORT_DATE_FORMAT);
            } else if (source.contains(SLASH)) {
                return getDate(source, DATE_FORMAT2, SHORT_DATE_FORMAT2);
            }
        } catch (Exception e) {
            throw new RuntimeException(String.format("parser %s to Date fail", source));
        }
        throw new RuntimeException(String.format("parser %s to Date fail", source));

    }

    private Date getDate(String source, String dateFormat, String shortDateFormat) throws ParseException {
        SimpleDateFormat formatter;
        if (source.contains(COLON)) {
            formatter = new SimpleDateFormat(dateFormat);
        } else {
            formatter = new SimpleDateFormat(shortDateFormat);
        }
        return formatter.parse(source);
    }
}
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;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

/**
 * @author lixiao
 * @date 2019/7/30 17:26
 */
@Configuration
public class MvcConfig implements WebMvcConfigurer {

    @Resource
    private RequestMappingHandlerAdapter handlerAdapter;


    /**
     * 在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法
     */
    @PostConstruct
    public void initEditableValidation(){
        ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) handlerAdapter.getWebBindingInitializer();
        if (initializer != null) {
            if (initializer.getConversionService() != null) {
                GenericConversionService genericConversionService = (GenericConversionService) initializer.getConversionService();
                genericConversionService.addConverter(new StringToDateConverter());
            }
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/knightdreams6/p/11733654.html