【问题标题】:Error : validation failed for objects with date错误:对具有日期的对象的验证失败
【发布时间】:2020-05-03 21:40:30
【问题描述】:

使用 spring 我有这个端点,

@RequestMapping(value = "/time/{date}", method = RequestMethod.GET)
public ModelRunCollection getPolicyByDate(GetPolicyByDateRequest request) {
    return delegate.submit(request);
}

请求对象看起来像这样

@Getter
@Setter
public class GetPolicyByDateRequest {

    @DateTimeFormat(pattern = "YYYY-MM-DDTHH:mm:ss.sssZ")
    private DateTime date;

    public GetPolicyByDateRequest date(DateTime date) {
        this.date = date;
        return this;
    }
}

我点击的网址是这个

http://localhost:8080/time/2020-01-17T00:33:53.148Z

我得到的错误是

Validation failed for object='getCreditPolicyByDateRequest'. Error count: 1

我无法理解为什么这是个问题。我查看了这个解决方案,但似乎正在做他提到的确切事情

Spring Validation failed for object with date field

【问题讨论】:

标签: java spring datetime controller


【解决方案1】:

你可以尝试这样做。在获取请求中仅通过日期。以后你可以在课堂上通过它。

@RequestMapping(value = "/time/{date}", method = RequestMethod.GET)
public ModelRunCollection  getPolicyByDate(
        @PathVariable("date")
        @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
                DateTime date) {
    return delegate.submit(new GetPolicyByDateRequest(date));
}

更多示例,您可以查看this

【讨论】:

  • 当输入为 2020-01-17T00:33:53.148Z 时,此模式 nested exception is java.lang.IllegalArgumentException: Invalid format: "2020-01-17T00:33:53" is too short 会导致此异常 yyyy-MM-dd'T'HH:mm:ss.sss'Z'"
  • @sf8193 我已经更改了 yyyy-MM-dd'T'HH:mm:ss.SSS'Z' 的模式,测试了 `2020-01-17T00:33:53.148Z` 并且它有效。
猜你喜欢
  • 1970-01-01
  • 2019-08-23
  • 2017-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 2014-09-08
相关资源
最近更新 更多