多个选择字段仅在JSP表单中发布第一个选定值

时间:2014-09-18 22:38:23

标签: forms jsp

在使用JSP的Spring MVC应用程序中,我有一个通过JSTL foreach循环生成的动态表单,每次迭代都会向表单添加一个多选字段:

在我的JSP文件中......

<c:forEach items="${myInputList}" var="myInput" varStatus="varstatus">
...
<select multiple="multiple" name="myInputList[${varstatus.index}].optionList">
    <option value="First">First</option>
    <option value="Second">Second</option>
    <option value="Third">Third</option>n
</select>
...
</c:forEach>

在DTO ......

private String[] optionList;

当我选择&#34; Second&#34;和&#34;第三&#34;并提交表格,POST只包含......

myInputList[(index value)].optionList=Second

将选项名称(PHP样式)后缀[]的标准建议在命中控制器尝试填充DTO时失败;名称中没有[]命中控制器没有问题,但是optionList数组中唯一的项目是发布的第一个值。

此外,最初作为映射到基本非数组String的非多选输入,此控件正常工作。我只是尝试将单个选择更新为多选。

任何建议都将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

如果这有助于任何人在路上......

我遇到的问题来自于继承父窗口小部件的保存方法,该窗口小部件仅从表单输入的value属性发布表单值。对于多选框,只有所选的第一个选项位于value属性中,而所有选定的选项都位于selectedOptions属性中。我重新设计了保存逻辑,首先检查selectedOptions,否则使用value