2012-06-14 13 views
1

我正在研究Spring MVC應用程序,它應該讓用戶更改列表的內容。如何處理非平凡的表單輸入? JSP還是Javascript?

該列表由與像名稱和作者的簡單屬性書本對象。該視圖是一個JSP頁面,顯示書籍列表並讓用戶更改內容。

改變列表意味着要添加圖書,刪除它們或改變在列表中的書籍的順序。

的問題是,我如何才能改變的列表返回到服務器?我可以編寫JavaScript來控制列表,但是如何將它發佈到Spring控制器?另一方面,我可以編寫一個JSP表單來改變這個模型,這個模型對於提交回服務器來說是微不足道的,但是我僅限於表單輸入中的基本文本字段?

編輯: 在JSP中也很容易使用像

<form:form action="myaction" method="post" commandName="mybook"> 

,但如果你的模型是一個對象的(有序)列表,然後你怎麼編輯它的形式來改變單一模式的屬性?

在Javascript中我可以從響應對象的列表,並改變它作爲必要的,但我怎麼提交回服務器?像

$.post("/modifybook.do",{ name: "Spring in Action", author: "Graig Walls" }); 

工作,但只適用於單個對象。

+0

有很多方法可以處理。 JSP本身對你的選項沒有任何限制,但是使用Spring form標籤*可能會 - 但是最終這些標籤都是純HTML,並且可以用其他任何方式進行操作。 –

+0

你可以發佈你的JSP的例子嗎? –

回答

1

從未使用過春節,這很可能是不合適的,但你能不能在列表轉換成XML,然後張貼回Java,然後在它的工作保留了所有複雜性和變化?

+0

或者,可能更可取的是JSON。 –

+0

是的,我已經嘗試過JSON和我張貼關於它的前面:stackoverflow.com/questions/11015611/...問題是,它提交回春天,我得到了它的工作單對象,但不是陣列 – wannabeartist

1

你應該避免操縱整個列表,句點。當只有一個列表元素被更改(編輯,添加或刪除)時,我無法看到填充整個項目列表並將其發送回服務器的場景。

我通常在我的應用程序做的就是我創建一氣呵成返回對象的整個列表,然後添加其他處理該列表中添加,編輯和刪除單個條目的處理程序(控制器)。我也嘗試在這種情況下堅持使用REST,這樣我就擁有了一個代表服務器資源的乾淨API,前端(AJAX + jQuery)使用它。

此解決方案對我很好,所以我建議堅持它。

+0

感謝您的答覆,你的策略聽起來不錯,但我不確定它是否適用於所有情況:如果列表是有序的呢?然後添加或刪除(或只是改變)元素會影響所有的元素?看到我以前的帖子爲例:http://stackoverflow.com/questions/11008876/best-way-to-store-ordered-lists-in-a-database – wannabeartist