1.使用 DispatchAction
DispatchAction是Struts包含的另一个能大量节省开发时间的Action类。与其它Action类仅提供单个execute()方法实现单个业务不同,DispatchAction允许你在单个Action类中编写多个与业务相关的方法。这样可以减少Action类的数量,并且把相关的业务方法集合在一起使得维护起来更容易。要使用DispatchAction的功能,需要自己创建一个类,通过继承抽象的DispatchAction得到。对每个要提供的业务方法必须有特定的方法signature。例如,我们想要提供一个方法来实现对购物车添加商品清单,创建了一个类ShoppingCartDispatchAction提供以下的方法:那么,这个类很可能还需要一个deleteItem()方法从客户的购物车中删除商品清单,还有clearCart()方法清除购物车等等。这时我们就可以把这些方法集合在单个Action类,不用为每个方法都提供一个Action类。在调用ShoppingCartDispatchAction里的某个方法时,只需在URL中提供方法名作为参数值。就是说,调用addItem()方法的 URL看起来可能类似于:http://myhost/storefront/action/cart?method=addItem其中method参数指定ShoppingCartDispatchAction中要调用的方法。参数的名称可以任意配置,这里使用的"method"只是一个例子。参数的名称可以在Struts配置文件中自行设定。
2.使用 LookupDispatchAction
org.apache.struts.actions.LookupDispatchAction类:通常LookupDispatchAction主要应用于在一个表单中有多个提交按钮,而这些按钮又有一个共同的名字的场合,这些按钮的名字和具体的ActionMapping的parameter属性相对应。配置LookupDispatchAction时,应该在<action>元素中,把parameter属性设置为“action”,使它和<html:submit>标签的property属性相一致。
DispatchAction是Struts包含的另一个能大量节省开发时间的Action类。与其它Action类仅提供单个execute()方法实现单个业务不同,DispatchAction允许你在单个Action类中编写多个与业务相关的方法。这样可以减少Action类的数量,并且把相关的业务方法集合在一起使得维护起来更容易。要使用DispatchAction的功能,需要自己创建一个类,通过继承抽象的DispatchAction得到。对每个要提供的业务方法必须有特定的方法signature。例如,我们想要提供一个方法来实现对购物车添加商品清单,创建了一个类ShoppingCartDispatchAction提供以下的方法:那么,这个类很可能还需要一个deleteItem()方法从客户的购物车中删除商品清单,还有clearCart()方法清除购物车等等。这时我们就可以把这些方法集合在单个Action类,不用为每个方法都提供一个Action类。在调用ShoppingCartDispatchAction里的某个方法时,只需在URL中提供方法名作为参数值。就是说,调用addItem()方法的 URL看起来可能类似于:http://myhost/storefront/action/cart?method=addItem其中method参数指定ShoppingCartDispatchAction中要调用的方法。参数的名称可以任意配置,这里使用的"method"只是一个例子。参数的名称可以在Struts配置文件中自行设定。
2.使用 LookupDispatchAction
org.apache.struts.actions.LookupDispatchAction类:通常LookupDispatchAction主要应用于在一个表单中有多个提交按钮,而这些按钮又有一个共同的名字的场合,这些按钮的名字和具体的ActionMapping的parameter属性相对应。配置LookupDispatchAction时,应该在<action>元素中,把parameter属性设置为“action”,使它和<html:submit>标签的property属性相一致。
解决方案 »
- 调试进spring源码,但是源码和调用的方法不一致,什么原因
- 泛型DAO的问题 初学求解..
- hibernate3 属性 延迟加载 中的问题,请大家有知道的帮帮忙,谢谢。
- 关于上传大文件内存溢出错误!我用Tomcat,上传超过20M的文件就报错java.lang.OutOfMemoryError: Java heap space,请问如何解决?(上传
- 看了很多ssh的贴子,越看越糊涂.把我自己的思路写出来,请高手多多指教.仍然以用户管理为例:
- spring官方资源获取问题
- hibernate 多对多自定义排序问题
- 为什么hibernate自动生成PO其date类型用java.util.Date,可以用java.sql.Date吗?会不什么影响吗?谢了!
- 30分!求用DOM对象创建一个名为productinfo的XML文件productinfo.xml?给出源码。
- 速卖通的API调用,如果提交的内容中包含中文,总是提示无效签名,请问有知道如何处理的吗?
- 除了做网页,JAVA到底有什么用。困惑呀。帮忙解惑吧
- 第一个ejb,运行不成功,帮忙看看
然后用JS判断一下<SCRIPT LANGUAGE="JavaScript">
<!--
function SetAction(opType) {
document.name1.action.value = opType
document.name1.submit();
}
//-->
</SCRIPT>
</head>
<body><html:form name="name1" action="/Del" type="XX.XX.Del">
<html:hidden property="action" />
<html:button property="update" value="UDDATE"
onclick="SetAction'updateDsp');"></html:button>
<html:button property="add" value="ADD"
onclick="SetAction'addDsp');"></html:button>
</html:form>
</body>
</HTML>
同样用楼上老兄的方法就可以,这个用在同个页面上多个提交时候使用比较合适。如果仅仅是一个页面一个提交的话,还有个更简单的方法。
<html:form action="/MyDispatchAction?action=add">加个参数不就行了么~在action里面验证这个参数,如果有form的话加个getset方法同样验证加个注释也可以解决问题。