Neither BindingResult nor plain target object for bean name 'user' available as request attribute

Ну, по порядку) Из контроллера на страницу идут список пользователей и список всех имеющихся ролей из базы.

            modelMap.addAttribute("users", userService.getUserList());
            modelMap.addAttribute("roles", roleService.getRoleList());

У пользователя есть одна или две роли. Все это отображается в таблице таким образом:

    <tbody>
    <tr th:each="user:${users}">
        <td th:text="${user.name}"></td>
        <td th:text="${user.password}"></td>
        <td>
            <div th:each="role:${user.roles}">
                <a th:text="${role.role}"></a>
            </div>
        </td>
    ...
    </tbody>

Задача такая, что у каждого пользователя есть модальное окно, в котором есть форма, в которой можно редактировать его данные, включая роли. То есть, рядом со списком ролей между тегами есть кнопка, открывающая это модальное окно, в котором такая форма:

                           <form action="#"
                                  th:action="@{/admin/update/{id}(id=${user.id})}"
                                  th:method="post">
                                <div class="text-center form-group">
                                    <label for="id"><b>Id</b></label>
                                    <input type="text" readonly="readonly" name="id" id="id"
                                           required class="form-control" th:value="*{user.id}">
                                </div>
                                <div class="text-center form-group">
                                    <label for="name"><b>First name</b></label>
                                    <input type="text" name="name" id="name"
                                           required class="form-control" th:value="*{user.name}">
                                </div>
                                <div class="text-center form-group">
                                    <label for="password"><b>Password</b></label>
                                    <input type="password" name="password" id="password"
                                           required class="form-control" th:value="*{user.password}">
                                </div>
                                <div class="text-center form-group">
                                    <label><b>Role</b></label>
                                    <div>
                                        <label>
                                            <select th:field="*{user.roles}" multiple="multiple">
                                                <option value=""></option>
                                                <option th:each="r:${roles}"
                                                        th:value="${r.role}"
                                                        th:utext="${r.role}"></option>
                                            </select>
                                        </label>
                                    </div>
                                </div>
                                <div class="modal-footer">
                                    <div class="form-group">
                                        <button class="btn btn-dark" data-dismiss="modal">Close</button>
                                        <input type="submit" name="submit" value="Edit"
                                               class="btn btn-primary pull-right">
                                    </div>
                                </div>
                            </form>

Беда в том, что в этом случае

    th:field="*{user.roles}"

вываливается исключение как в заголовке. Насколько я понял, такой синтаксис: "*{...}" подразумевает обращение к объекту в этом примере кода:

       <tr th:each="user:${users}">

причем так оно и есть, ведь в окне, если там нет выбора ролей, выводятся айдишник пользователя с именем и паролем для редактирования без исключительных ситуаций. При попытке задействовать выбор все валится. Скорее всего, что-то где-то упущено, но я этого не вижу. В общем нужна помощь)


Ответы (0 шт):