我正在尝试获得以下格式的查询参数"2018-01“,以便用作YearMonth (java.time)对象。
在我的控制器中,我有以下参数:
@RequestParam(value = "start") @DateTimeFormat(pattern = "yyyy-MM") YearMonth start但我得到以下错误:未能将java.lang.String类型的值转换为所需的java.time.YearMonth类型;嵌套的异常是java.lang.IllegalStateException:无法将java.lang.String类型的值转换为必需的类型java.time.YearMonth:没有找到匹配的编辑器或转换策略
编辑:
根据这个链接:https://jira.spring.io/browse/SPR-13518,自4.2.4版本以来就支持java.time.YearMonth转换,我使用的是SpringVersion4.3.3.RELEASE
发布于 2018-05-03 09:06:14
不知道@DateTimeFormatter注释是否支持YearMonth进行隐式转换。但
您可以为此YearMonth类型注册自定义转换器,如下所示:
@Configuration
@EnableMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(new YearMonthConverter());
}
}将YearMonthConverter定义为:
public class YearMonthConverter implements Converter<String, YearMonth> {
@Override
public YearMonth convert(String text) {
return YearMonth.parse(text, DateTimeFormatter.ofPattern("yyyy-MM"));
}
}在这里,您可以保证隐式转换。
https://stackoverflow.com/questions/50150675
复制相似问题