以下jstl代码显示奇怪的行为:
${property.bedrooms[0]}
<sf:select path="bedrooms[0]" multiple="multiple" items="${property.bedrooms[0].beds}" />
${property.bedrooms[0]}
输出结果为:
Bedroom{id=4, beds=[KING, QUEEN], enSuite=false}
+-------------+
| KING |
+-------------+
Bedroom{id=4, beds=[KING], enSuite=false}
Bedroom.toString()包含:
@Override
public String toString()
{
return "Bedroom{" + "id=" + id + ", beds=" + beds + ", enSuite=" + enSuite + '}';
}
property.bedrooms [0] .beds是一个List&lt; Enum&gt;,似乎在items属性中访问它会删除除第一个元素之外的所有内容!知道是什么导致了这个吗?
干杯! NFV
答案 0 :(得分:1)
尝试:
<sf:form modelAttribute="property">
<sf:select path="bedrooms[0].beds" multiple="true">
<sf:options />
</sf:select>
</sf:form>
根据spring-form(3.0.x)tld文档和源代码java doc: http://static.springsource.org/spring/docs/3.0.x/reference/spring-form.tld.html#spring-form.tld.options
如果select上的绑定值是枚举弹簧,则会自动使用该类的所有枚举值列表。
options标签的itemLabel和itemValue属性可用于显示更加用户友好的标签。
<sf:options itemLabel="friendlyName" />