2012-06-15 75 views
0

我正在嘗試學習Struts 2.0,並試圖更好地理解行爲的概念。我有一個表格,我想要預先加載值。用戶可以更改JSP中的值,然後提交表單,這將導致頁面顯示錶單中的數據。更好地理解Struts2的行爲

我得到它的工作,但不知道我的方法/邏輯是否正確。

的struts.xml的情況如下:

<action name="LoadForm" class="actions.Test" method="execute1"> 
    <result>/Test.jsp</result> 
</action> 

<action name="ShowResult" class="actions.Test" method="execute2"> 
    <result>/TestResult.jsp</result> 
</action> 

我使用prepare()預加載值。

當我在瀏覽器中調用LoadForm.action時,Test.jsp會顯示預裝數據。

Test.jsp有一個表單,其操作是ShowResult

當我提交表單時,它導航到TestResult.jsp,其中我顯示錶單中的值。

這是一個正確的方法還是有更好的方法來做到這一點?

此外,我不確定爲什麼我們需要在Action類中有超過2個執行方法。

回答

0

好吧,你幾乎是正確的,除了一件事你需要明白,準備方法就像一個init方法,它可以幫助你在框架調用執行或任何其他方法之前初始化/準備數據。

S2中的操作也作爲模型工作同一時間控制器和一個控制器執行多個任務的可能性很大。例如,我們有一個行動負責處理用戶相關的進程,其中包括

  1. 創建新的用戶
  2. 更新用戶
  3. 檢查的任何信息在短與用戶

所以,我們需要的不是有三個不同的動作來執行這些任務,但我們將創建一個單獨的Action,其中有三個方法,它們將負責處理這些任務。

我希望這可能會給你一個想法

+0

感謝您的回答Umesh。我需要再澄清一點。如何控制何時執行特定的執行方法?比方說,根據您的示例,我已將create(),update(),check()作爲三個方法,每個方法導致不同的JSP頁面。我如何調用讓我們從表單中更新update()? – codingsplash

+0

一個簡單的方法就是從JSP中命名這樣的動作,比如說updateUser,當你將它映射到你的xml文件中時,你可以使用方法標籤,如。Annotation也提供了同樣的方法,你可以在你的action標籤和url標籤中使用方法屬性 –

+0

非常感謝Umesh! – codingsplash