1

動的な数の属性を持つオブジェクトがあります。たとえば、車とそのすべての詳細を表示するページ:

  • モデル
  • 価格

これで、一部の特権ユーザーが 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 -->

これらすべての属性をコントローラーに渡して、新しい車をシステムに追加するにはどうすればよいですか?

私が探している構造は、キーとしての属性と、コントローラーによってさらに処理できるそれぞれの値を含むマップであると思います。どうすればこれを達成できますか?

ありがとう!

4

1 に答える 1

1

私はあなたが春のMVCを使用していると思いますか?

このような単純なモデルBeanを作成することをお勧めします

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

    // omitted getters and setters
}

これで、属性値をこのBeanに渡すことができます=>属性[$ {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");
}

試すことができませんでしたが、実際に機能するはずです

于 2012-09-11T05:06:08.520 に答える