无法转换类型为';java.lang.String';至所需类型';java.util.Date';
我有两个微服务,通过外文进行通信。 一个微服务公开另一个正在调用的方法。 该方法将日期作为参数 这是方法的代码:无法转换类型为';java.lang.String';至所需类型';java.util.Date';,java,spring-boot,netflix-feign,Java,Spring Boot,Netflix Feign,我有两个微服务,通过外文进行通信。 一个微服务公开另一个正在调用的方法。 该方法将日期作为参数 这是方法的代码: @Override public String verifyWorkingDaysByAccesstimeAndAttendanceDate(@PathVariable int accessTimeId, @PathVariable("attendanceDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME
@Override
public String verifyWorkingDaysByAccesstimeAndAttendanceDate(@PathVariable int accessTimeId,
@PathVariable("attendanceDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Date attendanceDate) {
AccessTime accessTime = accessTimeService.findByIDService(AccessTime.class, accessTimeId);
String day = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(attendanceDate).toUpperCase();
String status = "NOT_VERIFIED";
if (workingDayservice.findWorkingDaysByAccesstimeAndDate(accessTime, attendanceDate).toString().contains(day)) {
status = "VERIFIED";
}
return status;
}
==>如您所见,它正在获取日期并验证其在数据库中的存在性
另一个微服务正在使用这个类来调用这个方法:
@FeignClient(name = "access-control-micro-services-access-time")
public interface AccessTimeClient {
@RequestMapping(value = "/api/v${webService.currentVersion}/workingDay/accessTime/{accessTimeId}/{attendanceDate}", method = RequestMethod.GET)
String verifyWorkingDaysByAccesstimeAndAttendanceDate(@PathVariable("accessTimeId") int accessTimeId,
@PathVariable("attendanceDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Date attendanceDate);
==>第二个微服务正在另一个类中调用此方法,并为其提供从数据库检索的日期(格式:2019-03-29 08:38:08)
我的代码正在启动此异常:
未能将“java.lang.String”类型的值转换为所需的“java.util.Date”类型;嵌套异常为org.springframework.core.convert.ConversionFailedException:未能将值“2019-03-29 08:38:08.0”的类型[java.lang.String]转换为类型[@org.springframework.web.bind.annotation.PathVariable@org.springframework.format.annotation.DateTimeFormat java.util.Date];嵌套异常为java.lang.IllegalArgumentException:无效格式:“2019-03-29 08:38:08.0”在“08:38:08.0”处格式不正确
根据问题,外部客户端不支持
@DateTimeFormat
注释。@DateTimeFormat
注释由Spring MVC使用,而不是由Spring Cloud OpenFeign使用
有几种方法可以修复,例如,或。它需要根据您的用例定制代码,例如,您可能希望将旧的
Date
替换为ZonedDateTime
无效格式:\“2019-03-29 08:38:08.0\”在\“08:38:08.0\”
这个非常明确的错误消息让您感到困惑的是什么,例外情况是:无效格式:“2019-03-29 08:38:08.0”在“08:38:08.0”处格式不正确
——这是因为08:38:08.0
不适合该格式。请改为尝试2019-03-29T08:38:08
。我无法更改数据库中日期的格式。我没有那种权力。我的代码应该使用现有的格式,您不必更改数据库中日期的格式。在调用微服务时,只需读取(如果它们是字符串,则解析)它们并重新格式化。我取消了该解决方案,因为当我将日期解析回最新格式(在我将其更改为字符串并删除我不需要的时间并提出问题后)时,我得到了包含日期和bla bla bla bla bla的长格式。。。它只是没有将我的yyyy-mm-dd字符串作为yyyy-mm-dd日期返回:/:/