将对象列表从视图绑定到百里香中的控制器

时间:2019-10-09 18:33:12

标签: spring-boot spring-mvc thymeleaf

我有一个在视图中显示的对象'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}|"

0 个答案:

没有答案