【问题标题】:Spring Boot Date conversion from Form表单的 Spring Boot 日期转换
【发布时间】:2019-04-10 19:46:14
【问题描述】:

我在从控制器获取日期时遇到了一些问题,因为我不明白什么是正确的格式。

控制器:

@RequestMapping(value = "/findFlights", method = RequestMethod.POST)
    public String findFlights(@RequestParam("from") String from, @RequestParam("to") String to,
            @RequestParam("departureDate") @DateTimeFormat(pattern = "YYYY-MM-DD") LocalDate departureDate, Model model) {}

表格:

<form th:action="@{/findFlights}" method="POST">
        From:<input type="text" name="from" required/>
        To:<input type="text" name="to" required/>
        Departure Date:<input type="date" name="departureDate"  required />
        <input type="submit" value="Search"/>
</form>

当我提交表单时,无论日期的格式是什么,它总是给我一个错误:(这是错误:

无法将“java.lang.String”类型的值转换为所需类型 'java.time.LocalDate';嵌套异常是 org.springframework.core.convert.ConversionFailedException: 失败 从类型 [java.lang.String] 转换为类型 [@org.springframework.web.bind.annotation.RequestParam @org.springframework.format.annotation.DateTimeFormat java.time.LocalDate] 的值'2018-11-05';嵌套异常是 java.lang.IllegalArgumentException:值的解析尝试失败 [2018-11-05]

如果我指定@DateTimeFormat 注释,我认为转换会自动完成。

【问题讨论】:

标签: java date localdate


【解决方案1】:

YYYY-MM-DD 模式中,Y 是一周年,D 是一年中的一天,根据 SimpleDateFormat javadoc。对于标准日期,模式应为 yyyy-MM-dd:

@DateTimeFormat(pattern = "yyyy-MM-dd")

或者如果你想使用DateTimeFormat.ISO枚举:

@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) 

【讨论】:

  • 谢谢!现在可以使用了!
猜你喜欢
  • 2019-05-11
  • 2018-02-24
  • 1970-01-01
  • 2020-03-10
  • 1970-01-01
  • 2022-07-07
  • 2013-10-10
  • 1970-01-01
  • 2021-04-03
相关资源
最近更新 更多