2015-11-16 81 views
1

我是一個struts 2新手,我遇到了似乎是一個結構性問題。我假設我錯過了一些明顯的東西,但不知道是什麼。Struts2動態表單流

我有一個多頁表單,其中一些表單元素是動態生成的,並且數據是從數據庫和/或會話預填充的。流程是這樣的:

  • 措施1 SUCCESS負載Form1 - >
  • Form1職位,以措施2 - >
  • 措施2成功加載Form2,但措施2輸入重載Form1

表單1元素是動態的,因此需要數據庫和/或會話調用以及一些準備工作來構建表單。 Action2並不知道表單元素在運行時的確切內容。

我的問題是,我似乎無法避免在Action2的驗證方法中再次讓所有Action1執行代碼。即如果Action2驗證失敗,Action2需要重新運行所有代碼來構建Form1。

如果我對INPUT結果做了redirectAction(返回Action1),我將失去validate方法中的所有錯誤消息。

我試圖找出一種方法,以避免在我擁有的每個動態表單中的所有設置代碼位於兩個不同的位置。任何幫助將不勝感激。

+1

您可以使用'store'攔截器來保存消息 - http://struts.apache.org/docs/message-store-interceptor.html。 –

回答

0

沸騰的問題到:

我怎樣才能避免這兩種措施1和措施2

的主要途徑遵循DRY需要重複的代碼是:

  1. 創建在單個Java文件中使用兩種操作方法的操作,並且從每個Actio內(或之前)調用方法(自定義或prepare()) n方法。

  2. 使用方法(自定義或prepare())創建a BaseAction,並在每個Action的內部(或之前)調用它以擴展它。

  3. 在返回an INPUT result時使用RedirectAction結果,使用PRG pattern and MessageStore Interceptor保留消息。

上面的鏈接是SO答案,可能比(通常是神祕的)文檔對新用戶更有幫助。