2010-03-30 99 views
1

我使用Spring MVC 3.0和JSP。我有一個對象:Spring MVC jsp對象列表

public class ObjectWrapper { 
    private List<SomeTO> someTOs; 
} 

SomeTO包含像nameid領域。我如何創建一個用戶可以動態添加到列表SomeTO的表單?我搜索了一下,發現了一些關於spring:bind的內容,但對我而言還不清楚。

回答

2

在表單支持方法中,將列表設置爲LazyList,它是apache commons集合庫的一部分。

Factory notificationFactory = new Factory() { 
     public Object create() { 
      SomeTO rtVl = new SomeTO(); 
      return rtVl; 
     } 
}; 
myFormBacking.setSomeTOs(LazyList.decorate(myFormBacking.getSomeTOs)); 

那麼你的表格上,當您將數據發送到服務器,你可以,如果你使用

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 

那麼你可以簡單地去做到這樣

<input name="someTOs[0].name" value="" /> 

和。

<form:input path="someTOs[0].name" /> 

在將數據發佈到服務器之前,爲了使修剪更容易,請設置集合中元素的數量。因此,如果用戶添加了5個TO,那麼在表單發佈中發送該長度值。

現在在服務器上,在保存之前必須修剪列表。下面是修剪

public List<SomeTOs> pruneList(List<SomeTOs> unpruned,int expectedLength){ 
    List<SomeTOs> rtVl = new ArrayList<SomeTOs>(); 
    for (int i = 0; i < unpruned.length && expectedLength; ++i){ 
     rtVl.add(unpruned.get(i); 
    } 
    return rtVl; 
} 

這裏的功能是在上採用剪枝功能的提交(前保存)

wrapper.setSomeTOs(pruneList(wrapper.getSomeTOs(),Integer.parseInt(request.getParameter("expectedLength))); 
+0

你能解釋一下我,用什麼形式的代碼?我不明白command.someTOs [0] .someProperty =「YES」; 對不起,瘋狂的問題) – user305091 2010-03-30 13:27:35

+0

Hhehe,對不起......在我發佈答案後,我看到了屬性名稱和Id。讓我爲你解決它 – Zoidberg 2010-03-30 13:41:03