业务
创建优惠券
spring mvc controller
@RequestMapping(method = RequestMethod.POST)
public Result<String> create(CouponModel model) {//...}
调用接口
curl -X POST -d 'couponName=foo&couponPrice=30beginDate=1459500407&overDate=1459699200&...' 'http://localhost:8080/coupons'
Error 400 Bad Request
经查原来是参数是Long型, 而对应的Model是Date
private Date beginDate;
类型不匹配导致了上述的问题。
于是写了一个转换器
public class LongToDateConverter implements Converter<Long, Date> {
@Override
public Date convert(Long source) {
if (source == null ) {
return null;
}
return new Date(source);
}
}
@Configuration
@EnableWebMvc
public class WebMvcContext extends WebMvcConfigurerAdapter {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(new LongToDateConverter());
}
}
但是发觉压根没有生效, 哪里的问题呢?
增加joda-time包,就可以啦
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.4</version>
</dependency>