在循环中添加第二个下拉列表后,Thymeleaf 下拉选项消失

Thymeleaf dropdown options dissappear after adding second dropdown in loop

这是我的第一个问题,请多多关照 :D

我正在做一个 UNI 项目,它是一个业务调度程序。 我希望能够向我的项目添加许多任务组,所以我决定在循环中使用下拉列表来完成它。每次有人点击按钮时,都会出现新的下拉菜单(不确定这是否是最佳解决方案,但我仍在学习 Spring 和 Thymeleaf)。问题是,当我只有一个下拉菜单时,一切都很好。

但是在我点击加号按钮后,下拉选项消失了。

我试图在互联网上找到答案,但我找不到任何类似的东西。

这是我的表单代码:

  <form action="#" method="post" th:action="@{/projects}" th:object="${project}">
                <p class="C(red)" th:if="${#fields.hasAnyErrors()}" th:errors="*{all}"></p>
                <br/>
                <div><h2>New project</h2></div>
                <label>Description
                    <input type="text" class="form-control" th:field="*{description}" th:errorclass="'Bdc(red)'"/>
                </label>
                <fieldset th:each="projectGroup, projectGroupStat : *{selectedGroups}">
                    <div class="btn-group">
                        <select class="dropdown" th:field="*{selectedGroups[__${projectGroupStat.index}__]}"
                                th:id="${projectGroupStat.index}">
                            <option th:each="group: ${groups}" th:value="${group.id}"><a class="dropdown-item"
                                                                                         th:text="${group.description}"/>
                            </option>
                        </select>
                    </div>
                </fieldset>
                <div>
                    <button type="submit" name="addGroup">+</button> 
                </div>
                <br/>
                <p>
                    <button type="submit" class="btn btn-primary">Add</button>
                    <button type="reset" class="btn btn-warning">Clear</button>
                </p>
            </form>

这是我的控制器代码的一部分:

    @GetMapping(produces = MediaType.TEXT_HTML_VALUE)
    String showProjects(Model model){
        model.addAttribute("project", new ProjectWriteModel());
        model.addAttribute("groups", getGroups());
        return "projects";
    }
    
    
    @PostMapping(params = "addGroup")
    String addProjectGroup(@ModelAttribute("project") ProjectWriteModel current){
        current.getSelectedGroups().add(new String());
        return "projects";
    }
    
    private List<GroupReadModel> getGroups() {
        return taskGroupService.readAll();
    }

我是不是漏掉了什么?我将不胜感激任何帮助。 谢谢!

这是我从您提供的有限代码中得出的结论。

addProjectGroup中您需要在Model中设置groups。喜欢:

model.addAttribute("groups", getGroups());

与您在方法 showProjects 中所做的相同。这样一来,您的 HTML.

就可以使用它了