perfee 发表于 2013-2-7 15:06:12

一个表单,多个提交按钮的处理方法

●LookupDispatchAction:  当一个表单有多个提交按钮时,可实现不同提交按钮使用同一action调用不同方法
                         它继承DispatchAction,故已实现一个action分发多个命令
 
  在DispatchAction基础上做了一些改动.实质都是根据xx.do?method=cc的cc,找到action相应命令方法执行
 
  1.编写多个提交按钮的表单.这里使用Struts标签html,bean,以及国际化资源文件
    bean:message-key属性值引用的国际化资源文件的键
    submit-property属性值为请求的方法参数名,值为key表示的键对应的值
    翻译之后为<input type="submit" name="method" value="国际化资源文件中key所对应的值" />
    提交的请求实为:  user.do?method=value值
 
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
 
    <html:form action="user.do" method="get">
        name:<html:text property="userName" /><br/>
    <html:submit property="method"><bean:message key="button.add" /></html:submit>
    <html:submit property="method"><bean:message key="button.del" /></html:submit>
    </html:form>
 
  2.编写ActionFormBean,并配置form-bean
 
public class UserFormBean extends ActionForm {
 
private String userName;

public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
 
<form-beans >    <form-bean name="user" type="xiaoxu.vo.UserFormBean" />    </form-beans>
 
  3.编写action,并配置action
    注意该action必须有name属性,即该ActionMapping必须配置ActionForm
    分发的命令,即方法,参数列表与execute方法一致
    getKeyMethodMap是LookupDispatchAction的抽象方法,实现提交按钮的value值与命令方法的匹配
 
public class UserAction extends LookupDispatchAction {
 
/*两个命令方法,addUser,delUser*/
public ActionForward addUser(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
System.out.println("添加用户");
return null;
}
public ActionForward delUser(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
System.out.println("删除用户");
return null;
}
protected Map<String,String> getKeyMethodMap() {
Map<String,String>  map=new HashMap<String,String> ();    //创建Map集合
//key引用的国际化资源文件的键,值为命令方法名
//父类将会做进一步处理.从国际化资源文件中根据键获取值,再匹配命令方法名
map.put("button.add","addUser");
map.put("button.del","delUser");
return map;
}
}
 
<action-mappings>
    <action path="/user" type="xiaoxu.action.UserAction" name="user" parameter="method" />
</action-mappings>
页: [1]
查看完整版本: 一个表单,多个提交按钮的处理方法