我有一个在视图中显示的对象'InfoItem'。在控制器A中,我要添加模型并在视图A中显示。
对象
public class InfoItem {
private boolean level = false;
private InfoDtc infoDtc = null;
private String name = "";
}
包装器类,以发送对象列表并在编辑后检索
public class InfoItemCreationDto {
private List<InfoItem> infoItemList = new ArrayList<>();
public void addInfo(InfoItem infoItem) {
this.infoItemList.add(infoItem);
}
// getters and setters
}
控制器代码
@GetMapping("info")
public String getInfo(Model model, @PathVariable Integer item) {
// code to get response from backend
for (InfoItem ii : response) {
infoItemCreationDto.addInfo(ii);
}
model.addAttribute("form", infoItemCreationDto);
model.addAttribute("infoItemList", response); // i can see this in view, but i want to use above model 'form' from wrapper class
return "A";
}
在视图A 中,此对象以表格形式显示,然后需要对其进行编辑并将其保存在数据库中。
<form action="#" th:action="@{/uploadInfo}" th:object="${forms}" method="post">
<div class="form-group">
<div class="list-group"
th:each="info , itemStat :${infoItemList}">
<div th:if="${info.isLevel()}">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">
<span th:text="${info.getName()}"> Title </span>
</h6>
</div>
</div>
<div th:if="${info.getInfoDtc().getInfoType()} eq 'C'" >
<div class="form-group">
<select class="form-control selectpicker" th:name="|{infoItemList[__${itemStat.index}__].infoDtc.infoType}|">
<option value="1">Cat</option>
<option value="2">dog</option>
</select>
</div>
</div>
<input type="submit" value="Submit"
class="btn btn-info"/>
</div>
</form>
在“视图A”第4行中,th:each="info , itemStat :${infoItemList}">
显示了项目,但是我无法编辑该值并将其发送回控制器
我通过链接https://www.baeldung.com/thymeleaf-list
他们正在使用包装器类发送对象列表并进行检索。我也在尝试使用它,但是没有用。那么,将对象列表从视图绑定到控制器的方法是什么?这是绑定列表的错误方法吗:th:name="|{infoItemList[__${itemStat.index}__].infoDtc.infoType}|"