【问题标题】:How to take the time from Java Thymeleaf and send it to the controller? What is the type of parameter?如何从 Java Thymeleaf 中获取时间并将其发送到控制器?什么是参数类型?
【发布时间】: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”

【问题讨论】:

  • 什么不起作用?你得到了什么,请将该信息添加到问题中。另外还有 DateTime 的事实,我怀疑你正在使用 java.sql.Time。不要使用它,远离它。使用javax.time.LocalTime(和LocalDate)。最后使用表单对象来绑定参数而不是单个参数。
  • 如果可以,请避免使用DateTime。这些类设计不佳且早已过时,仅适用于 SQL 数据库。而是查看 LocalDateLocalTime 是否有效。均来自java.time, the modern Java date and time API
  • 嘿伙计们,谢谢你的建议。你们都说得对,我使用的是 java.sql.Time。我解决了日期的问题。我将其更改为 LocaleDate。但是仍然不知道如何解决时间问题。

标签: java spring thymeleaf spring-thymeleaf


【解决方案1】:

这是解决方案如何通过类型=时间的字段输入传递时间

   @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);
            LocalTime localTime = LocalTime.parse(time);
    
            return "redirect:/home";
        }

【讨论】:

    猜你喜欢
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 2013-07-14
    • 2015-07-02
    • 2011-08-16
    • 1970-01-01
    相关资源
    最近更新 更多