从数据库thymeleaf填充表

时间:2018-08-19 16:45:39

标签: html database thymeleaf

我想填写格式为表格的日历-每列是一周的不同日期,每一行是不同的小时。我想我需要向控制器发送两个参数(我将日和小时作为两个不同的字段)并作为返回的获取事件名称。

我知道如何从数据库获取数据并将其显示在新行中(例如:Springboot + thymeleaf displaying database contents in html table

我发现了如何将参数传递给控制器​​,但仅作为从数据库中删除项目的链接/按钮。 (例如:Passing two values from HTML to Controller using Thymeleaf th:href

不幸的是,我不知道该如何连接...

这是我控制器的一部分

@GetMapping("/event/eventList/{dayOfWeek}/{time}")
public String getEvent(@PathVariable String dayOfWeek, @PathVariable String time) {
    Event byDayOfWeekAndTime = eventRepository.findByDayOfWeekAndTime(dayOfWeek, time);
    String eventName = byDayOfWeekAndTime.getEventName();
    return eventName;
}

这是我在html中写的:

<tr>
    <th scope="row">08:00</th>
    <td th:action="@{/event/eventList/{dayOfWeek}/{time} (dayOfWeek='monday', time='08:00')}"></td>
</tr>

正如我说的,即使我的想法是正确的,我也不知道该怎么做。

谢谢!

更新:

像回答中那样改变控制器后,我仍然与百里香挣扎。我仍然必须使用th:action来获取控制器的答案?

以前,当我刚从数据库中获取数据时,我就是这样做的:

    <tr th:each="variableName : ${modelNameFromController}">
    <td th:text="${variableName.id}"></td>
    <td th:text="${variableName.email}"></td>
    <td th:text="${variableName.created}"></td>
</tr>

这一次我需要每次发送新参数(或发送一次以获得一个响应,以仅填充表中的一个单元格)所以我已经尝试过这样的事情:

 <td th:action="@{/event/eventList/Monday/08:00}" th:text="${event.eventName}"></td>

但是您可以想象它没有用:)

帮助!

1 个答案:

答案 0 :(得分:0)

向thd元素添加th:action属性是没有意义的。尝试使用以下代码段(如果您要对日期和时间进行硬编码,只需将其直接写到链接中即可):

<tr>
    <th>08:00</th>
    <td>
        <a th:href="@{/event/eventList/monday/08:00}">
            Click me
        </a>
    </td>
</tr>

如果您想使用表格,请使用以下方式替换a元素:

<form th:action="@{/event/eventList/monday/08:00}">
   <button>Click me</button>
</form>

更新

您的控制器需要进行一些调整:

@GetMapping("/event/eventList/{dayOfWeek}/{time}")
public String getEvent(
  @PathVariable("dayOfWeek") String dayOfWeek,
  @PathVariable("time") String time),
  Model model // That's one way to interact with the M in MVC
{
    // Log dayOfWeek and time
    Event byDayOfWeekAndTime = eventRepository.findByDayOfWeekAndTime(dayOfWeek, time);
    model.addAttribute("event", byDayOfWeekAndTime); // That's  what you are missing
    String eventName = byDayOfWeekAndTime.getEventName();
    return eventName;
}

您现在可以在模板中访问“事件”,例如:

<p th:text="${event}"></p>