1

我对 Spring 标签不是很熟悉,似乎我对一些我现在无法理解的问题感到震惊。

我在我的 jsp 中显示了两个选择标签,它们由 Arraylist 支持,这里的 map 是它们的代码

<form:select path="prsBTOData[${status.index}].colors" items="${prsBTOData.colors}" 
cssClass="productDetailsSelect"/>

<form:select path="prsBTOData[${status.index}].fonts" items="${prsBTOData.fonts}" 
cssClass="productDetailsSelect" >

颜色由数组列表支持,而字体由 Map 支持。下面是生成的 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为选定值,而我期待一个带有下拉选项的列表。甚至不确定为什么会生成这个隐藏字段以及它的目的是什么?

4

1 回答 1

0

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

当您给出一个数组列表(具有多个值)作为路径时,spring 假设您想要一个选择多个值的下拉列表。

你可能想给这样的(假设你color有财产prsBTOData

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

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

<form:select path="prsBTOData.color" items="${referenceData.colors}"/>
于 2012-09-19T05:56:38.743 回答