2012-02-09 83 views
0

我是新的结构体,如果我没有使用正确的术语或太模糊,请原谅。从Struts中的单个请求触发多个操作

我在页面上有多个表单。我将每个表单的action属性绑定到struts-config中的单独操作。每个表单的提交工作正常。但我也想在页面加载时预先填充所有表单。

我试图在struts config中创建多个s,所有这些都使用相同的路径,但每个使用不同的类型属性。但只有决赛似乎被执行。有没有办法让所有这些动作都可以执行,或者有什么方法可以让某个动作触发其他动作,或者类似的东西?我只是做一个设置控制器,但你只能绑定一个表单到一个动作,所以我不认为这会起作用。

我想我使用Struts 1

+0

你为什么要这样做?因为它们是完全不同的框架,所以确定你正在使用哪个版本可能是个好主意。 – 2012-02-20 21:37:42

回答

0

不知道您的表单数据有关,但即使它不是,而是一种策略,可以工作正在实施的基础数据,例如:

public class DataAction extends ActionSupport 
{ 
    private Data1 data1 = new Data1() // or whatever strategy of populating data 
    public Data1 getData() { return data1 } 
    public void execute() 
    { 
     // any common execution code 
    } 
} 

,然后扩展操作为每个表单

public class Form1Action extends DataAction 
{ 
    public void execute() 
    { 
    super.execute(); 
    // unique execution code 
    } 
} 
从JSP页面

然后,只需调用每个表单中的数据对象(S),因为他们将继承形成的基类。对于不想在Action的每个请求中加载数据对象的情况,可以简单地使用基本Data类中的一些逻辑,并让扩展类使用该逻辑来决定是否预先填充该数据对象。

另一个策略是让一个单独的Action处理所有的表单。再次,这只根据你的数据和你的设计是有意义的。如果它们在逻辑上不相关,则不要将它们合并为一个单独的操作。

+0

戴夫上面问的另一个更好的问题是你为什么要这样做。我可以想象几个用例,但它们可能不是你的情况。根据您的设计和数据,即使我上面提出的Struts2解决方案可能完全不合适。 – KappaMax 2012-02-21 05:02:33