繁体   English   中英

将复杂对象列表传递给控制器

[英]pass list of complex objects to controller

我有一个项目列表(列表),我通过获取请求将其传递到JSP页面。

@RequestMapping(value="value", method = RequestMethod.GET)
public void getItems(ModelMap model) {
    List<Item> items = itemDataService.getItems();
    model.addAttribute("items", items);
}

JSP看起来像这样:

<form method="POST">
    <div id=itemsList>
        <div class="box">
            <table class="display" width="100%">
                <theader>
                    <th>Item Name</th>
                    <th>Item Description</th>
                    <th>Accept Setting</th>
                </theader>
                <tbody class="list">
                    <c:forEach var="item" items="${items}" varStatus="loopStatus">
                        <tr>
                            <td> ${item.name}</td>                              
                            <td>${item.description}</td>
                            <td><input type="checkbox" id="chkbox" /></td>
                        </tr>
                    </c:forEach>
                </tbody>
            </table>
        </div>
    </div>
    <input type="submit" value="Save Items">
</form>

我现在想做的是,当我点击表单的“提交”按钮时,我想将项目列表传递回控制器。 我的问题是我不确定如何命名该节中的字段,以便将每个表行都视为一个项目,以及如何确保将这些项目作为列表发送到控制器。

到目前为止,控制器中的POST方法如下所示:

@RequestMapping(value="value", method = RequestMethod.POST)
public void onSubmit(ModelMap model) {
    System.out.println("##################### FORM SUBMIT");
}

到目前为止,提交表单时触发POST操作仍然有效,但是如何传递数据? item类本身具有用于名称和描述以及复选框值的getter和setter ...

尝试使用弹簧form标签。

希望他们有各自的setter和getter方法,

<form:form method="post" action="update" modelAttribute="Objectname">
    <div id=itemsList>
        <div class="box">
            <table class="display" width="100%">
                <theader>
                    <th>Item Name</th>
                    <th>Item Description</th>
                    <th>Accept Setting</th>
                </theader>
                <tbody class="list">
                    <c:forEach var="item" items="${items}" varStatus="loopStatus">
                        <tr>
                            <td> ${item.name}</td>                              
                            <td>${item.description}</td>
                            <td><input type="checkbox" id="chkbox" /></td>
                        </tr>
                    </c:forEach>
                </tbody>
            </table>
        </div>
    </div>
    <input type="submit" value="Save Items">
</form:form>

在控制器中

@RequestMapping(value="value", method = RequestMethod.POST)
public void onSubmit(@ModelAttribute ModelClass Objectname) {
    Objectname.getterMethod();
    System.out.println("##################### FORM SUBMIT");
 }

希望这可以帮助 !!

您在Java中有一个列表,该列表要发送到JSP,然后再将同一列表发送回Java,对吗? 如果我的理解是正确的,我建议您在传递给JSP之前(即在getItems方法中)将列表存储在会话范围中,当在JSP中提交表单时,请从onSubmit方法中的session属性获取列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM