spring boot 註冊型別轉換 (轉載)
阿新 • • 發佈:2019-01-02
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, "時間格式錯誤");
}
}
}