2

以下 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<Enum>,似乎在 items 属性中访问它会删除除第一个元素之外的所有元素!知道是什么原因造成的吗?

干杯! NFV

4

1 回答 1

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 上的绑定值是枚举,spring 将自动使用该类的所有枚举值列表。

options 标签的 itemLabel 和 itemValue 属性可用于显示对用户更友好的标签。

<sf:options itemLabel="friendlyName" />
于 2012-12-30T16:43:09.823 回答