Как отправить объект или массив со страницы html в метод POST, используя Thymeleaf с пружиной - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть HTML-страница со следующим кодом:

<div class="w3-container w3-light-grey">
    <div class="w3-container w3-grey">

    <form th:action="@{'/wordprocess/' + ${descriptionId}}" method="post">
        <table class="w3-table-all w3-card-4">
            <tr>
                <th>Id</th>
               <th>Word</th>
                <th>Type</th>
                <th></th>
            </tr>
            <tr th:each="wd : ${wordslist}">
                <td th:text="${wd.getId()}">Jill</td>
                <td th:text="${wd.getWord()}">Jill</td>
                <td th:if="${wd.getType() == 0}" th:text="word">Jill</td>
                <td th:if="${wd.getType() == 1}" th:text="skill">Jill</td>
                <td>
                    <p>
                        <input class="w3-check" type="checkbox" name="type" th:value="${wd.getType()}">
                        <label>Skill</label>
                   </p>
                </td>
          </tr>
        </table>
    <input class="w3-button w3-black" type="submit" value="Save"/>
    </form>
    </div>
</div>

в \ p \ block я использую флажок для типов инициализации объекта. Поле 'type' может принимать два целых значения: 0 или 1.

Я хочу иметь возможность указать значения этого типа в флажке (1 - проверено, 0 - не проверено) и получить этот массив в методе POST:

@RequestMapping(value = "/wordprocess/{descriptionId}", method = RequestMethod.POST)
public String save(
        @PathVariable long descriptionId,
        @RequestParam(value = "type", required = false) int[] type
){
    System.out.println(descriptionId);
    System.out.println(type[0]);
    return "index";
}

Но в методе save () у меня есть нулевое значение в переменной 'type'.

Как правильно отправить набор значений флажков в методе POST?

1 Ответ

0 голосов
/ 03 сентября 2018

Первое правило: с флажками / переключателями вы не получаете непроверенные элементы, возвращаемые на сервер, а только проверенные. Если вы добавите запрос HttpServletRequest в список аргументов вашего метода save () (он будет автоматически заполнен Spring), вы сможете вызывать request.getParameterValues("type") для атрибутов значения всех флажков с именем типа ». Вам нужно обновить атрибуты значений всех этих флажков на wd.getId () вместо wd.getType (), чтобы у вас были идентификаторы отмеченных элементов.

Наконец, чтобы указать начальное проверенное / непроверенное состояние, используйте для этого th:checked="${wd.getType()}" вместо th: value (последний из которых должен будет содержать идентификаторы, как указано выше.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...