由于在中的多个提交按钮都向一个action提交,使用Struts2 Action的execute方法就无法判断用户点击了哪一个提交按钮。
请求参数名的格式为
action!method.action
【第1步】实现主页面(more_submit.jsp)
My JSP 'hello.jsp' starting page在more_submit.jsp中有两个submit:保存和打印。其中分别通过method属性指定了要调用的方法:save和print。因此,在Action类中必须要有save和print方法。
【第2步】实现Action类(MoreSubmitAction)
packageaction;
importjavax.servlet.http.*;
importcom.opensymphony.xwork2.ActionSupport;
importorg.apache.struts2.interceptor.*;
publicclassMoreSubmitActionextendsActionSupportimplementsServletRequestAware
{
privateString msg;
privatejavax.servlet.http.HttpServletRequest request;
// 获得HttpServletRequest对象
publicvoidsetServletRequest(HttpServletRequest request)
{
this.request = request;
}
// 处理save submit按钮的动作
publicString save()throwsException
{
request.setAttribute("result","成功保存["+ msg +"]");
return"save";
}
// 处理print submit按钮的动作
publicString print()throwsException
{
request.setAttribute("result","成功打印["+ msg +"]");
return"print";
}
publicString getMsg()
{
returnmsg;
}
publicvoidsetMsg(String msg)
{
this.msg = msg;
}
}
【第3步】配置Struts2 Action,struts.xml如下:
xmlversion="1.0"encoding="UTF-8"?>
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
/result.jsp
result>
/result.jsp
result>
action>
package>
struts>
【第4步】编写结果页(result.jsp)
提交结果title>head>
${result}h1>
body>
html>
在result.jsp中将在save和print方法中写到request属性中的执行结果信息取出来,并输出到客户端。
启动Tomcat后,在IE中执行如下的URL来测试程序:
大家也可以直接使用如下的URL来调用save和print方法: