当前位置: 首页 > 知识库问答 >
问题:

REST中的@DateTimeFormat变量为空

万俟渊
2023-03-14

我已经看到了如何在Spring中使用LocalDateTime RequestParam?我得到“未能将字符串转换为LocalDateTime”,但我仍然有问题。

因此编写一个具有rest API的Spring Boot应用程序。

@RequestMapping(value = "/api/v1/climates/locationdates/{location}/{sdate}/{edate}", method = RequestMethod.GET)
   public ResponseEntity<Object> getClimate(@PathVariable("location") long location,
                                             @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss") LocalDateTime sdate, 
                                             @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime edate) {
      System.out.println("CONTROLLER location is " + location + " start is " + sdate + " end is " + edate);           
      return new ResponseEntity<>(climateService.getClimatesByLocationAndDates(location, sdate, edate), HttpStatus.OK);
   }

{“时间戳”:“2019-12-19T11:05:21.707+0000”,“状态”:500,“错误”:“内部服务器错误”,“消息”:“值不得为空!;嵌套异常为java.lang.IllegalArgumentException:值不得为空!”,“路径”:“/API/V1/Climates/LocationDates/1/2019-12-17T11:30:00/2019-12-17T11:55:00”}

日志

控制器位置为1开始为null结束为null

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "climate_gen")
private long id;

private float temperature;
private float humidity;
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss")
private LocalDateTime date;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "location_id", nullable = false)
private Location location;

共有1个答案

查锦程
2023-03-14

将@pathvariable添加到sdate和edate以访问url中的值,如下所示:

@RequestMapping(value = "/api/v1/climates/locationdates/{location}/{sdate}/{edate}", method = RequestMethod.GET)
    public ResponseEntity<Object> getClimate(@PathVariable("location") long location,
            @PathVariable("sdate") @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss") LocalDateTime sdate,
            @PathVariable("edate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime edate) {

         System.out.println("CONTROLLER location is " + location + " start is " + sdate + " end is " + edate);           
         return new ResponseEntity<>(climateService.getClimatesByLocationAndDates(location, sdate, edate), HttpStatus.OK);
   }
 类似资料:
  • 问题内容: 我知道在PHP中可能有“变量”变量。例如 是否可以在JavaScript中将变量的名称引用为字符串?怎么做? 问题答案: 对此没有单一的解决方案(当然,有,但是请不要认真考虑)。可以通过来动态访问 一些 全局变量,但这不适用于函数本地的变量。 不会 成为属性的全局变量是使用和和定义的变量。 几乎总是比使用可变变量更好的解决方案! 相反,您应该查看数据结构并为您的问题选择正确的结构]。

  • 用户可以在Playbook中,通过vars关键字自定义变量,使用时用{{ }}引用以来即可。 Playbook中定义和使用的变量的方法 例如下面的例子中,用户定义变量名为http_port,其值为为80。在tasks firewalld中,通过{{ http_port }}引用。 --- - hosts: web vars: http_port: 80 remote_user: r

  • 问题内容: 我有一个带有静态实例的android java类,其中包含一个用户信息。但是,在极少数情况下,当用户使用我的应用程序时,该静态实例中的变量之一会在一段时间后变为null。该Java类是全局的(未附加到任何活动)。是什么原因造成的? 编辑:该变量永远不会更改,除非在应用程序启动期间。我已经检查过调用它的函数永远不会被调用一次以上(adb logcat证明了当我添加一条日志表明正在被调用时

  • 我正在开发一个Spring WebMvc(不是Spring Boot)项目,该项目使用纯Java配置来设置bean。我很难让Spring/Jackson使用java.time(jsr310)对象(如LocalDateTime)尊重@DateTimeFormat注释。 类路径上有jackson-datatype-jsr310和jackson-databind jars(版本2.7.4),以及用于基本

  • 问题内容: 在SO和google中寻找了这个问题的答案,但找不到任何答案。 我有以下代码: 编译器返回以下内容: 从内部类内部访问局部变量变量;需要宣布为最终 为什么必须最终决定的技术原因是什么? 问题答案: 这是因为您正在使用匿名内部类。发生的是编译器为您创建了类。它将其称为您的外部类,并添加和编号,例如,等等。 该类具有对自动初始化的外部类的引用,因此其实例可以使用外部类的方法和字段。 但是您

  • 在我的班上我有日期字段: 我使用DataTimeFormat是因为我想要这样的日期格式(用于我的REST控制器): YYYY-MM-DD'T'HH:MM:SS.SSSZ,例如“2000-10-31 01:30:00.000-05:00”。 但它在JSON中转换为(JSON数组): 而不是像这样(JSON字符串): 我使用依赖项(因为转换为object,就像这个问题一样)。