我对Spring标签不是很熟悉,看起来我对某些问题感到震惊,我目前无法理解。
我在jsp中显示了两个select标签,它们由Arraylist支持,这里的地图是它们的代码
<form:select path="prsBTOData[${status.index}].colors" items="${prsBTOData.colors}"
cssClass="productDetailsSelect"/>
和
<form:select path="prsBTOData[${status.index}].fonts" items="${prsBTOData.fonts}"
cssClass="productDetailsSelect" >
颜色由Array列表支持,而字体由Map支持.below是生成的HTML
<select multiple="multiple" class="productDetailsSelect" name="prsBTOData[0].colors"
id="prsBTOData0.colors">
<option selected="selected" value="Red">Red</option>
<option selected="selected" value="Green">Green</option>
<option selected="selected" value="Black">Black</option>
</select>
<input type="hidden" value="1" name="_prsBTOData[0].colors">
我不确定为什么它正在执行multiple="multiple"
并且没有显示任何下拉菜单,只显示RED
作为选定值,而我期待列表中包含下拉选项。
甚至不确定为什么会产生这个隐藏的领域以及它的目的是什么?
答案 0 :(得分:0)
在form:select
中,items
属性是需要在选择框中显示的项目列表。 path
属性是与所选值绑定的属性。
由于你给了一个arraylist(有多个值)作为路径,spring假设你想要一个多值选择下拉。
您可能希望这样做(假设color
有prsBTOData
属性)
<form:select path="prsBTOData.color" items="${prsBTOData.colors}"/>
并考虑使用单独的模型对象来维护静态/参考数据(颜色,字体),如下所示:
<form:select path="prsBTOData.color" items="${referenceData.colors}"/>