我在将按钮放入基于Thymelaf的列表元素时遇到问题。我想在列表的元素旁边有一个按钮。
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout.html}">
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<section layout:fragment="" content="">
<div class="row">
<div class="col-2">
<a th:href="@{/archives}">archiwum zadań</a>
</div>
<div class="col-2">
<a th:href="@{/add}">dodawanie zadania</a>
</div>
</div>
<ul>
<li th:each="task: ${tasks}"
th:text="|${task.getId()} ${task.getName()} ${task.getCategory().getDescription()} ${task.isFinished()}|">
<input type="submit" value="Done">
</li>
</ul>
</section>
</body>
</html>
Thymelaf将用th:text
表达式生成的内容替换任何预先存在的标签内容。
在您的情况下,预先存在的内容是<input>
元素,这就是为什么不显示按钮的原因。
避免这种情况的一种方法是将th:text
放置在<li>
:内的跨度中
<ul>
<li th:each="task: ${tasks}">
<span th:text="|${task.id} ${task.name} ... |"></span>
<input type="submit" value="Done">
</li>
</ul>
(为了简洁起见,我从示例中删除了您的几个字段(。
请注意,在我的情况下,我已将${task.getId}
更改为${task.id}
。只要您有适当命名的getter(根据JavaBeans命名约定(,就可以使用字段名,Thymelaf就会找到正确的getter来调用。