在jsp页面中的<form name="form1" method="post" action="AddUser.do">
在这里面只能写一个Action
如果页面上有两个Action或者多个Action 我应该怎么办?
例如:
页面上面有2个按钮:1。提交2。查询/
我该怎么办?
用javascript
假设有下面两个按钮
<input type="button" value="submit" name="submit" id="idSubmit" />
<input type="button" value="query" name="query" id="idQuery" />
在你的页面里加入javascript代码
<script type="text/Jscript" for="window" event="onload">
document.all("idSubmit").onclick = function(){
document.form1.action=".....";
document.form1.submit();
}
document.all("idQuery").onclick = function(){
document.form1.action=".....";
document.form1.submit();
}
</script>
function setAction(action){
if(action =="search")document.forms[0].action="action1.do";
if(action =="update")document.forms[0].action="action2.do"
document.forms[0].submit();
}
定义这样一个javascript函数
让后在你的
<input type="button" value="submit" name="submit" onClick="javascript:setAction(search)" />
<input type="button" value="query" name="query" onClick="javascript:setAction(update)" />
DispatchAction是Struts包含的另一个能大量节省开发时间的Action类。与其它Action类仅提供单个execute()方法实现单个业务不同,DispatchAction允许你在单个Action类中编写多个与业务相关的方法。这样可以减少Action类的数量,并且把相关的业务方法集合在一起使得维护起来更容易。
要使用DispatchAction的功能,需要自己创建一个类,通过继承抽象的DispatchAction得到。对每个要提供的业务方法必须有特定的方法signature。例如,我们想要提供一个方法来实现对购物车添加商品清单,创建了一个类ShoppingCartDispatchAction提供以下的方法:
public ActionForward addItem( ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception;
那么,这个类很可能还需要一个deleteItem()方法从客户的购物车中删除商品清单,还有clearCart()方法清除购物车等等。这时我们就可以把这些方法集合在单个Action类,不用为每个方法都提供一个Action类。
在调用ShoppingCartDispatchAction里的某个方法时,只需在URL中提供方法名作为参数值。就是说,调用addItem()方法的URL看起来可能类似于:
http://myhost/storefront/action/cart?method=addItem
其中method参数指定ShoppingCartDispatchAction中要调用的方法。参数的名称可以任意配置,这里使用的"method"只是一个例子。参数的名称可以在Struts配置文件中自行设定