Как установить значение кнопки в цикле в Spring - PullRequest
0 голосов
/ 28 октября 2018

Я делаю очень простое приложение, используя Spring и Thymeleaf.У меня есть список категорий на одной странице, и я хотел бы перейти на другую страницу после нажатия на одну из ссылок.Но страницы будут очень похожими, поэтому я хотел бы сделать шаблон и мне нужно отправить контроллеру название выбранной категории.Я думал, что у меня могут быть кнопки в качестве ссылок, и я пытался отправить значение кнопки на контроллер, но я не могу сделать это в цикле.Когда я присваиваю «hard tekst» значению, это нормально, но когда я хочу назначить текущее значение в цикле в контроллере, у меня есть $ {category.name}, например, «категория 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 голосов
/ 28 октября 2018

Я бы не использовал 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, чтобы он выглядел и чувствовал себя как кнопка.Если вы используете загрузчик, вы можете проверить официальную документацию .Простой пример:

<a class="btn btn-primary" role="button" th:href=../>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...