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

时间:2014-07-14 11:51:14

标签: java list jsp controller

我有一个项目列表(List),我通过get请求传递给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以及复选框值...

2 个答案:

答案 0 :(得分:0)

尝试使用spring 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");
 }

希望这会有所帮助!!

答案 1 :(得分:0)

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