Как сохранить роль из Thymeleaf с помощью Spring Boot? - PullRequest
0 голосов
/ 07 января 2020

Привет, друзья, у меня есть две модели: пользователь и роль. Я вставил три роли (АДМИН, ЗАКАЗЧИК, ДИЛЕР) в таблице Роли. Я сделал эти роли доступными для поля «Тип пользователя Thymeleaf», которое будет выбрано при регистрации.

Атрибут модели контроллера для ролей.

@ ModelAttribute ("role" )

public List<Role> initializeRoles(){
    List<Role> roles = roleRepository.findAll();

    return roles ;
}

Тогда вот мой тимиан для отображения доступных ролей, которые пользователь может выбрать при регистрации.


 <div class="col-1.5">
        <label th:for="roles"> User Type: </label>
        <select class="form-control form-control-sm" id="agentName">
            <option value="">Select User Type</option>
            <option th:each="initializeRoles:${roles}"
                    th:value="${initializeRoles.id}"
                    th:text="${initializeRoles.name}"
            >
            </option>
        </select>
    </div>

Наконец, вот мой пользователь Служба для отправки регистрационных данных, введенных пользователем:

public void save(User user) {
        user.setEnabled(false);
        user.setPword(new BCryptPasswordEncoder().encode(user.getPword()));
        user.setRoles(user.getRoles());
        userRepository.save(user);
    }

Я ожидаю, что роль, выбранная из поля типа пользователя, будет отправлена ​​и назначена в качестве роли этому пользователю. однако остальные пользовательские данные успешно сохраняются, кроме выбранной роли. Где я иду не так?

The database output after data is submitted to my tables.

1 Ответ

1 голос
/ 08 января 2020

Атрибут name отсутствует в теге выбора

Следующее исправит проблему

<select class="form-control form-control-sm" name="roles" id="agentName">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...