0
我有一個包含多個項目的形式:春天的形式 - 擴展類的映射列表
<form>
<input name="items[0].title">
<input name="items[1].title">
<input name="items[2].title">
</form>
和類:
class Form
{
private List<Item> items;
public List<Item> getItems()
{
return items;
}
public void setItems(List<Item> items)
{
this.items = items;
}
}
class Item
{
private String title;
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title= title;
}
public String print()
{
System.out.println("title: " + title);
}
}
,它工作正常。我可以這樣使用它:
@RequestMapping(value="/add", method=RequestMethod.POST)
public ModelAndView addSubmit(Form form)
{
form.getItems().get(1).print();
...
}
我想要做的是添加新類型的項目。例如BigItem具有附加字段大小:
class BigItem
{
private String title;
private String size;
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title= title;
}
public String getSize()
{
return size;
}
public void setSize(String size)
{
this.size= size;
}
public String print()
{
System.out.println("title: " + title);
System.out.println("size: " + size);
}
}
這只是一個原型和簡化代碼。我預計未來會有新的相當複雜的項目類型,需要爲此做好準備。我的想法是創建帶有常用字段和方法的類Item,並在需要新的項類型時擴展它(例如BigItem)。但我不知道如何繪製它。假設我的形式如下:
<form>
<input name="items[0].title">
<input name="items[1].title">
<input name="items[1].size">
<input name="items[2].title">
</form>
和類BigItem擴展項目:
class BigItem extends Item
{
private String size;
public String getSize()
{
return size;
}
public void setSize(String size)
{
this.size= size;
}
public String print()
{
System.out.println("title: " + title);
System.out.println("size: " + size);
}
}
我該如何映射它的控制器方法裏面?我想從BigItem類而不是Item調用方法print()。
form.getItems().get(1).print();
但是如果我有 – Kamui 2015-04-01 12:25:35
但是如果我有鑑別器呢?例如: <選擇名稱= 「項[] .TYPE」> <選項值= 「項」>物品 <選項值= 「BigItem」> BigItem <選項值= 「BiggerItem」> BiggerItem 可以彈簧自動轉換它,或者我需要自己做這個? –
Kamui
2015-04-01 12:32:53
你必須自己做,因爲在Spring的角度來看,'