我有一个表单,它接受用户的几个输入来创建一个对象,其中一个输入是一组复选框。
复选框是从 Model
带着一个 ArrayList
与 Grape
名为“grapelist”的对象,但我无法确定如何将它们添加到提交表单时创建的对象中。
我的表格如下:
<form class="col-12" action="#" th:action="@{/admin}" th:object="${Wine}" method="post">
<div class="row">
<div class="col-1">
<label for="nameInput">Name: </label>
</div>
<div class="col-11">
<input class="w-100" id="nameInput" type="text" th:field="*{name}">
</div>
</div>
<div class="col-1">
<label for="descriptionInput">Description: </label>
</div>
<div class="col-11">
<textarea class="w-100" id="descriptionInput" type="text" th:field="*{description}"></textarea>
</div>
</div>
====================PROBLEM=======================
<div class="row" th:each="grape: ${GrapeList}">
<div class="col">
<label th:for="'grape' + ${grape.name}" th:text="${grape.name}"></label>
</div>
<div class="col">
<input type="checkbox" th:id="'grape' + ${grape.name}" th:value="${grape.id}" th:field="*{grapes.add()}">
</div>
</div>
====================PROBLEM=======================
<button class="btn btn-outline-success" type="submit" value="Submit">Save</button>
</form>
窗体正在创建 Wine
具有 ArrayList
与 Grape
被称为“葡萄”的物体。其他输入字段工作正常,但我不知道如何绑定arraylist为每个复选框添加grape对象。。这个 th:field="*{grapes.add()}"
只是为了描述我想做的事。。
感谢您的帮助!
1条答案
按热度按时间u2nhd7ah1#
添加
name
属性,例如“grape”。因此,它们都将以相同的名称生成。提交带有此类复选框的表单时,浏览器会为每个选中的复选框重复发送所选名称的值,如grape=first&grape=third&grape=extra
在控制器中捕获此数据。这可以通过几种方式实现。直接从获取参数
HttpServletRequest
:使用
@RequestParam
注解不确定是否有可能将这个构造直接Map到对象的字段,但似乎可以通过调整springmvc来实现这一点。