1

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

  • 模型
  • 颜色
  • 价格

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

  • 长度

我已经到了创建新车的表格的地步,该表格显示了所有字段,包括额外添加的字段:

    <!-- 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 -->

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

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

谢谢!

4

1 回答 1

1

我假设您使用的是spring mvc?

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

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

    // omitted getters and setters
}

您现在可以将属性值传递给此 bean => attributes[${a}](假设 'a' 是枚举、字符串或其他原始类型(如果您想使用更复杂的类型作为钥匙))

<!-- 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");
}

我无法尝试,但它应该确实有效

于 2012-09-11T05:06:08.520 回答