我正在使用Spring和Thymeleaf进行非常简单的应用程序。我在一个页面上有一个类别列表,单击一个链接后,我想转到另一个页面。但是页面将非常相似,因此我想做一个模板,我需要将所选类别的名称发送给控制器。我以为可以将按钮作为链接,但我尝试将按钮值发送给控制器,但无法循环执行。当我将“硬tekst”分配给该值时,就可以了,但是当我想在控制器的循环中分配当前值时,我有$ {category.name}而不是“ category 1”。
这是我的代码的一部分:
<table>
<tbody>
<tr th:each="category: ${categories}">
<td>
<form action="/categoryPage" method="post">
<button name="categoryName" value="${category.name}">
<span th:text="${category.name}"></span>
</button>
</form>
</td>
</tr>
</tbody>
我正在以这种方式检查值:
@PostMapping("/categoryPage")
@ResponseBody
public String getCategory (@RequestParam String categoryName)
{
//.........
return categoryName;
}
我想问你如何解决这个问题。也许有更好的方法吗?预先非常感谢。
答案 0 :(得分:0)
我不会使用POST
和form
来解决最初的问题。您的方法名为getCategory
,因此我假设它将返回一个新的类别页面=>请求将是安全的,并且幂等=> GET是必经之路。
另一个建议是删除表单和按钮,只包含链接元素。
<tr th:each="category: ${categories}">
<td>
<a th:href="@{/categoryPage(categoryName=${category.name})}" th:text="${category.name}" class="button"></a>
</td>
</tr>
您可以将css类添加到此元素,以使其外观和感觉像按钮一样。如果您使用的是引导程序,则可以查看官方的documentation。 一个简单的例子是:
<a class="btn btn-primary" role="button" th:href=../>