我是结构新手,如果我没有使用正确的术语或太模糊,请原谅。
我在页面上有多个表单。我将每个表单的action属性绑定到struts-config中的单独操作。每个表单的提交都能正常工作。但我还想在页面加载时预先填充所有表单。
我尝试在struts配置中创建多个s,它们都具有相同的路径但每个都具有不同的类型属性。但只有决赛似乎才会被执行。有没有办法可以让所有这些动作都执行,或者有什么方法可以让动作触发其他动作,或类似的东西?我只想制作一个设置控制器,但你只能将一个表单绑定到一个动作,所以我认为这不会起作用。
我想我正在使用Struts 1.
答案 0 :(得分: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页面,只需为每个表单调用数据对象,因为它们将从基类继承。对于不希望在Action的每个请求上加载数据对象的情况,您可以简单地在基础Data类中使用某些逻辑,并让扩展类使用该逻辑来决定是否预先填充该数据对象。
另一种策略是让所有表单都有一个单独的Action进程。根据您的数据和设计,这只是有意义的。如果它们在逻辑上不相关,请不要将它们合并为单个操作。