【问题标题】:extract the selected value from a dropdown list with Thymeleaf and Spring boot使用 Thymeleaf 和 Spring boot 从下拉列表中提取所选值
【发布时间】:2019-09-23 13:59:26
【问题描述】:

我的问题是我无法获取下拉列表选择的值,错误是:

字段 'admin' 上的对象 'agent' 中的字段错误:拒绝值 [1];代码 [typeMismatch.agence.admin,typeMismatch.admin,typeMismatch.com.example.demo.entities.Adminstrateur,typeMismatch]; ;默认消息 [无法将类型“java.lang.String”的属性值转换为属性“admin”所需的类型“com.example.demo.entities.Adminstrateur”;嵌套异常是 java.lang.IllegalStateException:无法将类型“java.lang.String”的值转换为属性“admin”所需的类型“com.example.demo.entities.Adminstrateur”:

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

adminController.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";
    }

【问题讨论】:

  • 我真的需要你的帮助,很紧急

标签: html spring-boot thymeleaf


【解决方案1】:

在这里th:field="*{admin}" 您将所选选项的值(这是一个字符串,因为选择选项的值不是对象)绑定到一个管理对象。这是错误的,它是您的错误的原因。

您必须更改您的命令对象,以便它可以接收管理员 ID。稍后您可以在后端搜索完整的管理对象,或者您可以在隐藏输入中添加所有管理信息并在表单提交时在控制器中恢复它们(这仍然不会使您不必将您的选择绑定到字符串命令对象中的字段)。

【讨论】:

  • 对不起,我没听清楚。你能说得更清楚些吗?
【解决方案2】:

如果你的管理对象有一个“id”属性(它应该)你改变:

th:value="${a.codeUtilisateur}"

到这里:

th:value="${a.id}"

【讨论】:

    猜你喜欢
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 2023-03-15
    相关资源
    最近更新 更多