为列表中的每个元素添加按钮



我在将按钮放入基于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来调用。

最新更新