2009-11-30 51 views
2

我在另一個Struts Action中從一個方法調用一個Struts動作中的方法時遇到問題(我被告知這是可能的)。Struts 1.2.9動作鏈接

我正在使用兩個Struts DynaValidatorForms - 一個用於創建一個條目,另一個純粹用於查看動作(以及編輯,刪除等)。我有兩個獨立的Struts Action文件:CreateAction.java(它有create()方法)和ViewAndEditAction.java(它包含view()和edit()方法)。

我想要做的是在前一個動作中的create()方法完成之後,在後一個動作中調用view()方法。

我已經看到了行動鏈,但一直沒能找到解決我的問題。

回答

1

您需要在第一個操作中創建轉發到下一個操作。然後返回適當的轉發。在下面的配置中,如果您在創建操作中返回「成功」,那麼它將轉到下一個操作的視圖方法。

<action 
path="/create" 
type="package.CreateAction" 
name="YourForm" 
scope="request" 
validate="false"> 
<forward 
    name="failure" 
    path="/mainMenu.jsp"/> 
<forward 
    name="success" 
    path="/view.do" redirect="false"/> 
</action> 

<action 
path="/view" 
type="package.ViewAndEditAction" 
name="YourForm" 
scope="request" 
validate="false"> 
<forward 
    name="failure" 
    path="/mainMenu.jsp"/> 
<forward 
    name="success" 
    path="/view.jsp"/> 
</action> 
+0

感謝您儘快回到我身邊文森特。 這是我一直在嘗試做的事情,但它已被證明不成功 - Struts如何知道在轉發之後ViewAndEditAction中的哪個方法會擊中? 也可以在兩個動作之間使用不同的DynaValidatorForm? 謝謝。 – Ger 2009-11-30 13:50:12

+0

我懷疑在這些操作之間使用不同的形式可能會產生問題,這就是您遇到問題的原因。您可以在操作配置中指定方法名稱,以便解決其他問題。 – 2009-11-30 14:01:25

+0

嗯,我明白了,所以我的轉發就像「/view.do?method=getRecord」。 非常感謝文森特。 – Ger 2009-11-30 15:02:08