Java Spring rest控制器从查询参数中的zonedatetime中删除加号
我已经成功地通过了Java Spring rest控制器从查询参数中的zonedatetime中删除加号,java,spring-boot,controller,zoneddatetime,Java,Spring Boot,Controller,Zoneddatetime,我已经成功地通过了 @Test public void test() { String text1 = "2009-07-10T14:30:01.001Z"; String text2 = "2009-07-10T14:30:01.001+03:00"; DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ");
@Test
public void test() {
String text1 = "2009-07-10T14:30:01.001Z";
String text2 = "2009-07-10T14:30:01.001+03:00";
DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ");
ZonedDateTime zonedDateTime1 = ZonedDateTime.parse(text1, f);
ZonedDateTime zonedDateTime2 = ZonedDateTime.parse(text2, f);
System.out.println(zonedDateTime1);
System.out.println(zonedDateTime2);
}
输出是
2009-07-10T14:30:01.001Z
2009-07-10T14:30:01.001+03:00
但是,当我尝试在spring控制器上使用此模式时
@GetMapping
public ResponseEntity get( @RequestParam("start") @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ")
ZonedDateTime start) {
Dto result = service.get(start);
return new ResponseEntity(result, getHeaders(), HttpStatus.OK);
}
例如,只有当我通过Z而不是时区时,它才起作用
2009-07-10T14:30:01.001Z
但当尝试通过时区偏移时,会出现错误消息
无法将“java.lang.String”类型的值转换为所需类型
“java.time.ZoneDateTime”;嵌套异常为
org.springframework.core.convert.ConversionFailedException:未能
从类型[java.lang.String]转换为类型
[@org.springframework.web.bind.annotation.RequestParam
@org.springframework.format.annotation.DateTimeFormat
值“2009-07-10T14:30:01.001 03:00”的java.time.ZonedDateTime];
嵌套异常为java.lang.IllegalArgumentException:解析尝试
值[2009-07-10T14:30:01.001 03:00]失败“
我试着这样通过邮递员的请求
POST localhost:9080/MyApp/user?start=2009-07-10T14:30:01.001+03:00
header: Content-Type application/json
当您有(+
)这样的特殊字符时,必须对
检查您的输入,在错误消息中,它清楚地表明
+
缺失2009-07-10T14:30:01.001 03:00
POST localhost:9080/MyApp/user?start=2009-07-10T14:30:01.001%2B03:00