Spring select tag生成隐藏字段

时间:2012-09-18 19:39:02

标签: java spring spring-mvc

我对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作为选定值,而我期待列表中包含下拉选项。 甚至不确定为什么会产生这个隐藏的领域以及它的目的是什么?

1 个答案:

答案 0 :(得分:0)

form:select中,items属性是需要在选择框中显示的项目列表。 path属性是与所选值绑定的属性。

由于你给了一个arraylist(有多个值)作为路径,spring假设你想要一个多值选择下拉。

您可能希望这样做(假设colorprsBTOData属性)

<form:select path="prsBTOData.color" items="${prsBTOData.colors}"/>

并考虑使用单独的模型对象来维护静态/参考数据(颜色,字体),如下所示:

<form:select path="prsBTOData.color" items="${referenceData.colors}"/>