2009-11-30 52 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