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

Моя проблема в том, что я не могу получить значение, выбранное в раскрывающемся списке, ошибка:

Ошибка поля в объекте 'agence' в поле 'admin': отклоненное значение [1];коды [typeMismatch.agence.admin, typeMismatch.admin, typeMismatch.com.example.demo.entities.Adminstrateur, typeMismatch];;сообщение по умолчанию [Не удалось преобразовать значение свойства типа 'java.lang.String' в требуемый тип 'com.example.demo.entities.Adminstrateur' для свойства 'admin';Вложенное исключение - java.lang.IllegalStateException: невозможно преобразовать значение типа «java.lang.String» в требуемый тип «com.example.demo.entities.Adminstrateur» для свойства «admin»:

addagence.html:

<form action="#" th:action="@{/addAgence}" th:object="${agence}" method="post">

                        <div class="row">
                             <div class="form-group col-md-8">
                                <label for="adresse" class="col-form-label">Adresse</label> <input type="text"  class="form-control"  name="adresse"> 
                            </div>
                             <div class="form-group col-md-8">
                                <label for="ville" class="col-form-label">Ville</label> <input type="text"  class="form-control"  name="ville"> 
                            </div>
                             <div class="form-group col-md-8">
                                <label for="admin" class="col-form-label">Administrateur</label>      

                                <select 
                                  class="form-control" th:field="*{admin}">
                                <option value="">Select Admin</option>
                                <option th:each="a: ${admins}"
                                  th:value="${a.codeUtilisateur}"
                                  th:text="${a.nom}"></option>
                                   </select>            
                            </div>
                            <div class="col-md-8">
                                <input type="submit" class="btn btn-primary" value="Add Agence" >
                            </div>

                            <div class="form-group col-md-8"></div>

                        </div>
                    </form>

A

dminController.java:

@GetMapping("signupAgence")
    public String showSignUpForm(Agence agence,Model model) {
        List<Utilisateur> admins=adminServices.getAdmins();
        model.addAttribute("admins", admins);
        return "addagence";
    }
@RequestMapping(value = "/addAgence")
    public String addAgence(Model model, Agence ag) {
        Agence agence = adminServices.addAgence(ag);
        model.addAttribute("agence", agence);
        return "redirect:/agence";
    }

1 Ответ

0 голосов
/ 24 сентября 2019

Здесь th:field="*{admin}" вы привязываете значение выбранного параметра (которое является строкой, поскольку значение параметра выбора НЕ является объектом) с объектом Admin.Это неправильно, и это является причиной вашей ошибки.

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

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