我想填写格式为表格的日历-每列是一周的不同日期,每一行是不同的小时。我想我需要向控制器发送两个参数(我将日和小时作为两个不同的字段)并作为返回的获取事件名称。
我知道如何从数据库获取数据并将其显示在新行中(例如: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>
但是您可以想象它没有用:)
帮助!
答案 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>