3 回答

TA贡献2011条经验 获得超2个赞
url参数必须编码
调用者有责任这样做。如果调用者使用 Java,他可以简单地将值设置为:
URLEncoder.encode("2019-08-19 000:00:00.000+0000", "UTF-8");
这将解决
2019-08-19%2000:00:00.000%2B0000

TA贡献2012条经验 获得超12个赞
这是已知行为,您可以发送%2B
而不是+
http://localhost:8989/api/v1/test?date=2019-08-19%2000:00:00.000%2B0000
执行此翻译的嵌入式 tomcat 服务器和 spring 甚至不参与此操作。如类代码中所示,没有配置可以更改此行为。所以你必须忍受它

TA贡献1831条经验 获得超4个赞
这是我笔记本电脑上的快速测试。我的控制器
@GetMapping(value = "/api/{version}/test", produces = "application/json")
public SuccessResult getFreeList(@PathVariable String version,
@RequestParam("date") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Date date) {
System.out.println(date);
SuccessResult result = new SuccessResult();
result.setDate(date);
return result;
}
我的输出对象
public class SuccessResult {
String message = "success";
Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
到达端点的 url
http://localhost:8080/api/v1/test?date=2019-08-19T00:00:00.000%2B00:00
结果
{"message":"success","date":1566172800000}
添加回答
举报