LookupDispatchAction也是DispatchAction 的一种,但它的处理更加简单。该Action
也可包含多个处理方法,它可让处理方法与按钮直接关联,无须使用任何的JavaScript
脚本。
使用LookupDispatchAction时,提交按钮必须使用Struts 的html 标签,下面是该示
例按钮部分的源代码:
<td>
<html:submit property="method">
<bean:message key="button.add"l>
</html:submit>
<html:submit property="method">
<bean:message key="button.modify"l>
</html:submit>
<input type="reset" value='<bean:message key="button.reset"I>'I>
<ltd>
代码中两个提交按钮分别增加了property 属性,该属性的值为method。而在action
的配置中,也使用parameter作为参数,看下面的action 配置代码:
<action path="/login" type="lee.LoginAction" name="loginForm"
scope="request" validate="true" input="/login.jsp" parameter="method">
<forward name="success" path="/welcome.jsp"l>
</action>
这段配置代码表明:该action 也根据method 参数来区分请求分别调用哪个方法,此
时无须使用method 的隐藏域,而是将按钮的property 设为method。通过这种方式可以
避免书写JavaScript脚本。
因此可通过重写getKeyMethodMap方法完成按钮与Action 中方法的关联,下面是
该Action 的源代码:
public class LoginAction extends LookupDispatchAction
{
II 用于关联按钮和方法
protected Map getKeyMethodMap()
Map map = new HashMap();
II如果按钮标题的key 为button.add. 则提交该按钮时对应add 方法
map .put ("button. add" , "add");
II如果按钮标题的key 为button.modify. 则提交该按钮时对应modify 方法
map.put ("button.modify" , "mod工fy") ;
return map;
}
II 第一个处理逻辑
public ActionForward add(ActionMapping mapping, ActionForm form ,
HttpServletRequest request , HttpServletResponse response)
throws Exception
System.out.println(" 增加II) i
request.setAttribute("method" , "增加") ;
return mapp工ng.f工ndForward(" success") ;
}
第二个处理逻辑
public ActionForward modify(ActionMapping mapping , ActionForm form ,
HttpServletRequest request , HttpServletResponse response)
throws Exception
System.out.println("修改II) ;
request.setAttribute( 咱ethod II II 修改II) ;
return mapping.findForward("success");
LookupDispatchAction必须重写getKeyMethodMap方法,该方法返回一个Map 对象,
并在该对象内保存了按钮标题与方法之间的对应。
使用 LookupDispatchAction