1. 程式人生 > >spring boot 註冊型別轉換 (轉載)

spring boot 註冊型別轉換 (轉載)

spring boot註冊一個全域性的型別轉換器,轉換表單中的String 到Date

@Configuration
public class WebConfig {

    @Autowired
    private RequestMappingHandlerAdapter requestMappingHandlerAdapter;

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

類StringToDateConverter要實現Converter

public class StringToDateConverter implements Converter<String, Date> {
    @Override
    public Date convert(String source) {
        Assert.hasText(source, "Null or empty date string");
        Date date = DateUtil.parseDate(source, DateUtil.DATE_FORMAT_MILLISECOND);
        return date;
    }
}

時間工具類

public class DateUtil {
    public final static String DATE_FORMAT_DAY = "yyyy-MM-dd";
    public final static String DATE_FORMAT_SECOND = "yyyy-MM-dd HH:mm:ss";
    public final static String DATE_FORMAT_MILLISECOND = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";

    public static Date parseDate(String dateString, String format) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
        try {
            return simpleDateFormat.parse(dateString);
        } catch (ParseException e) {
            throw new CustomerException(HttpStatus.ERROR, "時間格式錯誤");
        }
    }
}