我使用的是Spring Boot 2.0.0 RC1。我可以看到这个更改:https://github.com/spring-projects/spring-boot/commit/2fa0539e7f7bf93505f67303955cc7da6f9f5846和类路径上的类WebConversionService。我可以用我选择的日期格式提供它的bean。但是这个:
@RequestMapping(value = ["/test"], method = [RequestMethod.GET])
fun test2(@RequestParam param: LocalDate): LocalDate {
return param
}
当我用" 2018-01-01"来呼叫它时仍然无法正常工作。我知道我可以使用@DateTimeFormat,但是我试图避免这种情况并设置全局格式(或者理想情况下根本不设置它并使其正常工作,就像解析JSON主体一样)
答案 0 :(得分:1)
为使此新功能正常工作,您需要在validation_sw
中设置company_id
属性。
请注意,使用通用ISO格式company_id
似乎存在问题:当我尝试使用该格式时,遇到了以下异常:
Table-2
通过调试,我发现根本原因是此异常:
spring.mvc.date-format
我还发现,用于解析的application.properties
类似于yyyy-MM-dd
表示:
Failed to convert value of type 'java.lang.String' to required type 'java.time.LocalDate'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.web.bind.annotation.RequestParam java.time.LocalDate] for value '2018-04-20'; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [2018-04-20]
我假定无法获得Text '2018-04-20' could not be parsed: Unable to obtain LocalDate from TemporalAccessor: {DayOfMonth=20, YearOfEra=2018, MonthOfYear=4},ISO of type java.time.format.Parsed
的原因是,构造的DateTimeFormatter
缺少toString()
字段的值,但是Value(YearOfEra,4,19,EXCEEDS_PAD)'-'Value(MonthOfYear,2)'-'Value(DayOfMonth,2)
字段已填写。
因此,我尝试使用LocalDate
来代替(有关TemporalAccessor
和Era
的区别,请参见here):
YearOfEra
更新
在GitHub上打开了一个新的issue。