2012-09-17 33 views
3

我必須擁有4個對象,組,部分和問題及其選項。每個集團都有不同的部門,部門有多個問題和問題可供選擇。現在我必須設計表單輸入系統,以便每個組和部分可以一步一步地被覆蓋。春天mvc我正在做這一切。如何處理春季mvc中的多個動態表單

你能告訴我一個方法,我該如何解決這個問題?

回答

2

由於列表綁定簡單,您一定可以在Spring MVC中做到這一點。 Spring MVC允許大量的自由,所以基本上如果你只使用這個框架,你將不得不從頭開始提出一個解決方案。
這是一個用例和解決方案。實施起來有點困難,因爲它從頭開始。隨意適應你的具體需求,添加任何你想要的奇特的UI框架,但你應該得到一個大概的想法。你可以跳到第三部分來快速回答。

比方說,你想創建/在一個單獨的頁面編輯組:

    要編輯/添加部分,以
  • 要編輯/添加問題到任何部分
  • 要編輯/選項添加到任何問題

一頁面設計:

  1. 您有一個帶有一個大單表單的JSP Group頁面(這也只是一個例子)
  2. 將會有按鈕添加嵌套的東西。點擊時,一些JavaScript會顯示一個空白表格,允許使用這些東西的信息。這個空白表單本身會有按鈕添加嵌套的嵌套東西,等等(直到東西是一個選項)。
  3. 設計與您想要顯示/編輯的現有材料相同,但表格不會爲空
  4. 您可以判斷您是在創建還是在編輯當前組(頁面的上下文或javascript/html技巧)。
  5. 可能有/的現有的部分名單你可以「拖&滴」的一組感謝里面一些JavaScript jQuery的

II。代碼設計:

  1. 您具有對應於JSP
  2. 羣對象有List<Section> sections屬性,該科對象具有List<Questions> questions屬性的GroupController等
  3. 你有方法createGroup和editGroup
  4. 提交您的JSP表單並調用createGroup或editGroup時,您可以知道組中提交的元素是否已經存在,因此您可以決定在數據庫中添加或編輯/更新它們。所有這些邏輯都可以在另一個類中完成,例如Spring服務。
  5. 您總是提供現有部分的可能列表(通過在兩種方法中將該列表添加到模型中,或者更好地通過執行a single method annotated with @ModelAttribute)。這個列表可以在另一個類中進行計算(一個服務/ DAO /兩者最終都會觸發數據庫)。

三,神奇:與Java控制器綁定的JSP形式:

在頁面上你將有一個<form:form commandName="group">,並在控制器方法的參數你就會有一個@ModelAttribute("group") Group group

現在,提交第一個選項的名稱,你就必須這樣在JSP:

<form:input path="sections[0].questions[0].options[0].name" /> 

(或通過一些JavaScript生成HTML中的等價物)。