2009-11-18 59 views
0

我在使用Spring編寫的代碼時遇到嚴重問題,因此我決定從頭開始並徵求建議。下面是我的要求:Spring Advice - 提交表單

  1. 當第一次加載頁面我需要,我可以在JSP訪問數據庫中檢索對象的列表。
  2. 我使用此列表填充 下拉列表。
  3. 當用戶選擇 從下拉的 形式下面由 適當的數據填充的對象(所有這些 數據是可用的,因爲它是檢索 的頁面是當第一
    加載)
  4. 用戶可以修改這個 數據並提交表單。我需要 這個數據保存到數據庫
  5. 的 頁面應重新加載,需要 因爲他們有 改變,使這個名單
    提供給JSP再次檢索從DB對象 列表。

我一直在使用SimpleFormController和referenceData()和onSubmitAction()方法,但我不確定這是否是最佳解決方案。我認爲我的問題是,在onSubmitAction完成後,對象列表在JSP中不可用,因爲referenceData()在onSubmitAction()完​​成後未調用。

道歉,如果這是一個愚蠢的請求。我一直在Google上搜索並尋找2天的教程,我找不到一個能夠滿足我需要的教程。

所以我的問題是我應該實施哪些方法來滿足這些要求?

回答

1

與使用基於註釋的控制器的更新,更靈活的方式相比,老式的使用Controller類層次結構的Spring方法有許多缺點。

這就是說,你有沒有試過在處理表單提交後發送重定向?這既解決了用戶被提示的問題,如果他重新加載頁面,重新提交表單是否可以。

+0

感謝您的快速回復。如果你有一個特定的方法,我需要打電話來做到這一點,如果你有一個代碼行的例子,這將是非常好的,以節省我更多的時間做錯事情! – Caroline 2009-11-18 14:52:10

+0

我相信fforw是指(基於註釋的Spring MVC配置)[http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html#mvc-annotation]和/或REST像你可以用這個創建的控制器(特別是在即將到來的Spring 3.0中)。 – 2009-11-18 17:53:56

0

我對你的問題感到困惑的是onSubmitAction()調用 - 你使用Spring portlet代碼還是servlet代碼?

如果您使用的是portlet代碼,那麼您應該也可以重寫onSubmitRender()以返回RedirectView將用戶重定向回同一頁面。正如你所說,如果你使用相同的頁面作爲你的默認成功視圖,你不會通過referenceData()調用返回;如果您將用戶重定向到頁面,則會通過包含referenceData()調用的整個頁面加載過程來接受用戶。所以,你只需要包括重寫onSubmitRender()返回是這樣的:如果你使用servlet代碼

return new ModelAndView(new RedirectView(url, true)); 

,沒有onSubmitAction()只的onsubmit() - 並在年底你重寫的onSubmit(),你會像上面一樣做,返回一個新的RedirectView()到你的同一頁面。

+0

感謝您的提示。我試過這個,它在一定程度上起作用。我沒有得到我以前得到的異常,但referenceData()方法仍未被調用。我將URL設置爲JSP。在jsp加載時還是有其他一些需要配置的配置時,是否應該調用referenceData()方法? – Caroline 2009-11-18 16:14:41

+0

不要將URL設置爲JSP URL,請將其設置爲Action URL(將您的SimpleFormController與URL關聯的映射)。 換句話說,如果你有一個「/showForm.do」映射到你的SimpleFormController,那麼你的URL應該是「/showForm.do」。 – delfuego 2009-11-19 17:38:51

0

這可以用幾種不同的方法來解決:

  1. 設置你的successView的東西,將轉發到窗體命令,好像它是一個初始請求(例如設置指示形式的參數什麼的不應該重新提交)
  2. 將您的successView設置爲重定向回原始形式。 (例如redirect:/some/url
  3. 您的表單提交邏輯調用referenceData方法來填充您需要的請求屬性。

1和2具有重用現有表單顯示邏輯的優勢。另外,如果用戶在提交表單一次後重新加載頁面,則2具有避免提交的優點。

+0

我的scccessview設置爲JSP 的名稱。我不確定我可以發送它。你碰巧有一個例子,兩個選項聽起來像他們會工作,但我不知道如何實現它們。如果可能的話,我真的不想去選擇3。 – Caroline 2009-11-18 16:16:22

+0

更新了#2 ...如果您使用'redirect:/ some/url'的視圖名稱,Spring MVC將發出重定向到'/ some/url' – David 2009-11-20 18:51:08