如何在Spring中循环设置按钮值

时间:2018-10-28 16:38:53

标签: java spring thymeleaf

我正在使用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;
}

我想问你如何解决这个问题。也许有更好的方法吗?预先非常感谢。

1 个答案:

答案 0 :(得分:0)

我不会使用POSTform来解决最初的问题。您的方法名为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=../>