【发布时间】:2022-12-11 00:32:38
【问题描述】:
我是 Java spring 的新手,正在学习如何进行预订。我的任务是制作一个 Web 应用程序,帮助客户预订他们选择的某些咖啡。
我有预订表格,其中输入了日期、时间和预订人数。
这是 HTML 中的输入字段,我只在其中插入时间。
<input type="time" id="appt" min="09:00" max="21:00"
class="form-control" step="60" name="time">
我的问题是我应该在控制器中设置什么类型的时间参数。
这也是我将 12:00 PM 插入输入字段时为时间参数传递的格式示例:时间=12:00
我应该在我的控制器中更改什么才能使其正常工作?
@PostMapping( "/book")
public String makeReservation(Model model,
@RequestParam Long objectId,
@RequestParam Integer numPersons,
@RequestParam String date,
@RequestParam String time) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate=LocalDate.parse(date,formatter);
LocalDateTime localDateTime = LocalDateTime.parse(time);
return "master-template";
}
以前,我使用的是 java.sql.Time,但现在我试图将字符串时间解析为 LocalDateTime,但出现此错误:
java.time.format.DateTimeParseException:无法在索引 0 处解析文本“12:00”
【问题讨论】:
-
什么不起作用?你得到了什么,请将该信息添加到问题中。另外还有
Date和Time的事实,我怀疑你正在使用java.sql.Time。不要使用它,远离它。使用javax.time.LocalTime(和LocalDate)。最后使用表单对象来绑定参数而不是单个参数。 -
如果可以,请避免使用
Date和Time。这些类设计不佳且早已过时,仅适用于 SQL 数据库。而是查看LocalDate和LocalTime是否有效。均来自java.time, the modern Java date and time API。 -
嘿伙计们,谢谢你的建议。你们都说得对,我使用的是 java.sql.Time。我解决了日期的问题。我将其更改为 LocaleDate。但是仍然不知道如何解决时间问题。
标签: java spring thymeleaf spring-thymeleaf