【发布时间】:2019-12-30 10:05:33
【问题描述】:
我的Controller里有这个方法(这是Kotlin的方法,不过我想你可以理解):
open fun getAis(
@RequestParam("beginPeriodDate") @DateTimeFormat(pattern = "yyyy-MM-dd") beginPeriodDate: Date,
@RequestParam("request") request: Boolean,
@RequestParam("requestNumber") requestNumber: String,
@RequestParam("sender") sender: String
): Data =
service.get(beginPeriodDate, request, requestNumber, sender)
我正在尝试通过浏览器访问它。我发送这个:http://localhost:8097/shep/sync/ais?beginPeriodDate=2019-08-25?request=false?requestNumber=272710100307142417?sender=2727851024302531
得到这个:
Failed to convert value of type 'java.lang.String' to required type
'java.util.Date'; nested exception is
org.springframework.core.convert.ConversionFailedException: Failed to
convert from type [java.lang.String] to type
[@org.springframework.web.bind.annotation.RequestParam
@org.springframework.format.annotation.DateTimeFormat java.util.Date] for
value '2019-08-25?request=false?requestNumber='2710100307142417'?
sender='27851024302531''; nested exception is
java.lang.IllegalArgumentException: Invalid format: "2019-08-25?
request=false?requestNumber='27..." is malformed at "?request=false?
requestNumber='27..."
【问题讨论】:
-
将所有
?替换为&,只保留第一个?。基本上你用于测试的 URL 是错误的。 -
@M.Deinum 是的,它有效,谢谢。为什么是错的?因为
/shep/sync/ais部分? -
?在 URL 中表示参数的开始。&用于分隔参数。 -
是的 @M.Deinum 是对的,你的 URL 必须看起来像
http://localhost:8097/shep/sync/ais?beginPeriodDate=2019-08-25&request=false&requestNumber=272710100307142417&sender=2727851024302531
标签: java spring kotlin date-formatting get-request