在使用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的非多选输入,此控件正常工作。我只是尝试将单个选择更新为多选。
任何建议都将不胜感激。感谢。
答案 0 :(得分:2)
如果这有助于任何人在路上......
我遇到的问题来自于继承父窗口小部件的保存方法,该窗口小部件仅从表单输入的value
属性发布表单值。对于多选框,只有所选的第一个选项位于value
属性中,而所有选定的选项都位于selectedOptions
属性中。我重新设计了保存逻辑,首先检查selectedOptions
,否则使用value
。