如何将集合属性绑定到Spring MVC中的表单

agn*_*nul 16 java spring spring-mvc java-ee

我正在尝试使用Spring-MVC将我的一个模型对象绑定到表单的字段.一切正常,除了模型对象的一个​​属性是无序集合.做点什么

    <c:forEach items="${m.items}" var="i" varStatus="itemsRow">
      <form:input path="items[${itemsRow.index}]"/>
    </c:forEach>
    <form:errors path="items" />
Run Code Online (Sandbox Code Playgroud)

对于List类型属性可以正常工作,但是对于Set,在提交时会尝试将输入字段内容绑定到对象属性时抛出错误.

Spring中是否有开箱即用的功能?

Jac*_*son 5

我认为它必须是一个有序的集合.例如,Spring参考中有一个图表,讨论如何引用属性.它说:

account [2]表示索引属性帐户的第三个元素.索引属性可以是数组,列表或其他自然排序的 集合(强调他们的)

也许一种方法是向对象添加一个getter,而不是返回你的Set,返回Set.toArray().然后您的items属性将引用该数组.当然,你不能依赖订购.