2012-09-11 53 views
1

我有一個具有動態數量屬性的對象。例如呈現汽車與它的所有詳細信息的頁面:彈簧:處理具有可變屬性的對象

  • 型號
  • 顏色
  • 價格

現在一些特權用戶可以將屬性添加到車對象。讓我們在某些時候的需求出現任何用戶應該能夠指定汽車的lenght說,所以我們想添加一個新的屬性

  • 長度

我已經意識到這點在那裏我有創造新汽車,顯示所有領域,包括額外添加的那些形式:

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

我假設你使用的是spring mvc?

你可能想這樣

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

    // omitted getters and setters 
} 

創建一個簡單的模型豆你現在可以值傳遞的屬性這個bean =>屬性[$ {一}(假設「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"); 
} 

我不能嘗試,但它應該實際工作

+0

這個作品!謝謝! – davhab