【问题标题】:Handling Date as Request Params in Spring Boot getting error在 Spring Boot 中将日期作为请求参数处理错误
【发布时间】:2019-01-31 07:40:33
【问题描述】:

我正在处理一个要求,我将keydate 作为@RequestParam 传递,以从MSSQL Server db 中获取created_datemodified_date 之间的记录列表。

这里key 是必需的,date 是可选的。

我有一个 GET 请求,将 keydate 作为 @RequestParam 发送到 Spring Controller。

@GetMapping(value = "/getValueFromGC", produces = { MediaType.APPLICATION_JSON_VALUE })
public List<GcAppConfig> getValueFromGC(@RequestParam String key, @RequestParam(required = false)@DateTimeFormat(pattern = "dd-MM-yyyy") Date date) {
   //if date param is not null
    if(date != null) {
        return gcAppConfig.getValueFromGC(key,date);
    }
   //if date param is null fetching the list of all available records
    else {
        return gcAppConfig.getValueFromGC(key);
    }

}

如果date 参数为空,控制器将获取记录。即

网址:localhost:8082/getValueFromGC?key=TOLERANCE&date=

同时以以下格式传递date 参数

网址:getValueFromGC?key=TOLERANCE&date=21-01-2019

这是我的服务gcAppConfig,它绕过date获取created_datemodified_date之间的记录

注意:created_datemodified_date 是 datetime2 格式

@Query(" Select g from GcAppConfig g where g.isActive=1 and g.keys= :keys" + 
        "  and  :date >=" + 
        "  CAST(g.createdDate AS DATE) and " + 
        " :date <= " + 
        "  CAST(g.modifiedDate AS DATE) ")
public List<GcAppConfig> getValueFromGC(@Param("keys")String keys, @Param("date")Date date);

无法解析请求的 CAST 类型:DATE

如有错误,请在 Query 中更正我。欢迎任何建议。 提前致谢。

【问题讨论】:

  • 您不允许以 dd-mm-yyyy 格式传递请求参数...您可以将日期作为字符串模式 ddMMyyyy 发送,并在收到 java 中的请求后将其转换...

标签: java sql-server spring-boot


【解决方案1】:

与您的Repository 无关。错误位于Controller 级别。你真的必须使用java.sql.Date吗?如果您使用java.util.Date,它应该可以正常工作,尤其是使用@DateTimeFormat("yyyy-MM-dd") 参数注释。

【讨论】:

  • 谢谢@Pijotrek,现在我在比较created_datemodified_date 之间的日期时遇到错误。
猜你喜欢
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 2020-05-20
  • 2021-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多