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;
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值