点击这些按钮时进入到同一个action中找到相应的方法

HTML code
  
  
<form action="arrayaction.do" method="get"> <input type="button" value="插入"/> <input type="button" value="删除"/> <input type="button" value="修改"/> <input type="button" value="显示"/> </form>



问题是这样的:页面上有多个按钮,我需要当点击这些按钮时全部进入到同一个action中,但是这个action中有不同的方法.比如insert() delete()等,我点击不同按钮时怎么能够让它找到相应的方法呢?

 

 

 

不用JavaScript、DispatchAction就可以来做:

HTML code
   
   
< form action ="arrayaction.do" method ="get" > < input type ="button" value ="插入" name ="insert" /> < input type ="button" value ="删除" name ="delete" /> < input type ="button" value ="修改" name ="modify" /> < input type ="button" value ="显示" name ="list" /> </ form >


假如用户点了“插入”按钮,这时:
request.getParameter("insert")=="插入";
request.getParameter("delete")==null;
request.getParameter("modify")==null;
request.getParameter("list")==null;

以此类推!也就是说无论多少submit类型的按钮,只有一个不为空。这时在Struts1的Action中以用反射方法来做:

Java code
   
   
public class MyAction extends Action{ // 注意,这里并不需要继承DispatchAction public ActionForward execute(ActionMapping mapping, ActionForm from, HttpServletRequest request, HttpServletResponse response) throws Exception { String func = { " insert " , " delete " , " modify " , " list " }; String methodName = null ; for (String f : func){ if (request.getParameter(f) != null ){ methodName = request.getParameter(f); break ; } } try { // 利用反射技术让程序自动找到要处理的方法并执行之,注意methodName参数 Method method = this .clazz.getDeclaredMethod(methodName, ActionMapping. class , ActionForm. class , HttpServletRequest. class , HttpServletResponse. class ); return (ActionForward)method.invoke( this , mapping, from, request, response); } catch (Exception e) { request.setAttribute( " message " , e.getMessage()); return mapping.findForward( " message " ); } } public ActionForward insert(ActionMapping mapping, ActionForm from, HttpServletRequest request, HttpServletResponse response) throws Exception { // todo } public ActionForward delete(ActionMapping mapping, ActionForm from, HttpServletRequest request, HttpServletResponse response) throws Exception { // todo } public ActionForward modify(ActionMapping mapping, ActionForm from, HttpServletRequest request, HttpServletResponse response) throws Exception { // todo } public ActionForward list(ActionMapping mapping, ActionForm from, HttpServletRequest request, HttpServletResponse response) throws Exception { // todo }
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值