在循环中添加第二个下拉列表后,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.
就可以使用它了
这是我的第一个问题,请多多关照 :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.