Как передать выбранное значение раскрывающегося списка в контроллер в Thymeleaf? - PullRequest
0 голосов
/ 11 ноября 2019

Как передать выбранное значение из выпадающего списка (Thymeleaf) на контроллер (Spring)? Сам список формируется нормально, проблема в кнопке.

Контроллер:

@RequestMapping(value="courier/notInTime", method = RequestMethod.POST)
public String deleteUser (@RequestParam String task) {
    System.out.println(task);
    return "redirect:/courier";
}

Вид:

<div class="taskList" th:object="${task}">
    <select class="form-control" id="courierTasks" name="courierTasks">
        <option value="">Select task for disable</option>
        <option th:each="task : ${tasks}"
                th:value="${task}"
                th:text="${task}">
        </option>
    </select>
    <form th:action="@{/courier/notInTime}" method="post">
        <input type="hidden"/>
        <button type="submit">Not in time</button>
    </form>
</div>

Ответы [ 3 ]

1 голос
/ 11 ноября 2019

Вы должны добавить тег выбора внутри формы, чтобы форма отправляла task.

Попробуйте следующее

<form th:action="@{/courier/notInTime}" method="post">
  <div class="taskList" th:object="${task}">
    <select class="form-control" id="courierTasks" name="courierTasks">
        <option value="">Select task for disable</option>
        <option th:each="task : ${tasks}"
                th:value="${task}"
                th:text="${task}">
        </option>
    </select>
    <input type="hidden"/>
    <button type="submit">Not in time</button>

  </div>
</form>

Обратите внимание, что вы можете написать простую функцию JavaScript, чтобыформа отправляет task, даже если она находится за пределами формы, однако я не вижу причины не добавлять выбор в форму в вашем случае.

1 голос
/ 11 ноября 2019

Вы просто измените @RequestParam на @Valid в своем контроллере, затем измените свое имя выбора на «task» в Thymeleaf, и оно должно быть в оболочке формы.

@RequestMapping(value="courier/notInTime", method = RequestMethod.POST)
public String deleteUser (@Valid String task) {
    System.out.println(task);
    return "redirect:/courier";
}

<select class="form-control" id="courierTasks" name="task">
    <option value="">Select task for disable</option>
    <option th:each="task : ${tasks}"
            th:value="${task}"
            th:text="${task}">
    </option>
</select>
0 голосов
/ 12 ноября 2019

@ Sopheak @Ioannis много, спасибо.

Контроллер:

@RequestMapping(value="courier/notInTime", method = RequestMethod.POST)
public String deleteUser (@Valid String task) {
    System.out.println(task);
    return "redirect:/courier";
}

Вид:

 <form th:action="@{/courier/notInTime}" method="post">
        <select class="form-control" id="task" name="task">
            <option value="">Select task for disable</option>
            <option th:each="task : ${tasks}"
                    th:value="${task}"
                    th:text="${task}">
            </option>
        </select>
        <button type="submit">Not in time</button>
 </form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...