Spring:处理具有可变属性的对象

时间:2012-09-11 03:46:32

标签: java spring spring-mvc

我有一个具有动态数量属性的对象。例如,一个显示汽车及其所有细节的页面:

  • 模型
  • 颜色
  • 价格

现在,一些特权用户可以向car对象添加属性。让我们说在某些时候出现的要求是任何用户都应该能够指定汽车的长度,所以我们想添加一个新的属性

  • 长度

我已经达到了创建新车的形式,显示所有字段,包括额外添加的字段:

    <!-- ADDITIONAL ATTRIBUTES -->

    <c:forEach items="${attributes}" var="a">

    <div class="${a}">
        <span class="details_headline">${a}:</span>
        <input id="${a}" name="${a}" class="input" type="text" value="" placeholder="${a}"/>
    </div>

    </c:forEach>

    <!-- END ADDITIONAL ATTRIBUTES -->

我现在如何将所有这些属性传递给控制器​​,然后将新车添加到我的系统中?

我相信我正在寻找的结构是一个包含属性作为键的映射和相应的值,然后可以由控制器进一步处理。我怎样才能做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:1)

我假设您使用的是spring mvc?

您可能想要创建一个像这样的简单模型bean

public class AttributesBean {
    private Map<String, String> attributes = new HashMap<String,String>();

    // omitted getters and setters
}

您现在可以将属性值传递给此bean =&gt; attributes [$ {a}](假设'a'是枚举,字符串或其他基本类型(如果要使用更复杂的类型作为键,请考虑使用ConversionService API))

<!-- ADDITIONAL ATTRIBUTES -->

<c:forEach items="${attributes}" var="a">

<div class="${a}">
    <span class="details_headline">${a}:</span>
    <input id="${a}" name="attributes[${a}]" class="input" type="text" value="" placeholder="${a}"/>
</div>

</c:forEach>

<!-- END ADDITIONAL ATTRIBUTES -->

Spring将创建一个新的AttributesBean对象,并将这些参数绑定到相应的字段。

@RequestMapping
public void handleAttributes(final AttributesBean bean) {
    // bean.getAttributes().get("abc");
}

我无法尝试,但它应该可以正常工作