知识大全 处理一个form多个submit

Posted

篇首语:千磨万击还坚劲,任尔东西南北风。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 处理一个form多个submit相关的知识,希望对你有一定的参考价值。

Struts2教程2:处理一个form多个submit  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在很多Web应用中 为了完成不同的工作 一个HTML form标签中可能有两个或多个submit按钮 如下面的代码所示

   <! [if !supportLineBreakNewLine] ><action= …  method= post >……<inputtype= submit value= 保存 /><inputtype= submit value= 打印 /></>

  由于在<form>中的多个提交按钮都向一个action提交 使用Struts Action的execute方法就无法判断用户点击了哪一个提交按钮 如果大家使用过Struts x就会知道在Struts 之前的版本需要使用一个LookupDispatchAction动作来处理含有多个submit的form 但使用LookupDispatchAction动作需要访问属性文件 还需要映射 比较麻烦 从Struts 开始 加入了一个EventDispatchAction动作 这个类可以通过java反射来调用通过request参数指定的动作(实际上只是判断某个请求参数是不存在 如果存在 就调用在action类中和这个参数同名的方法) 使用EventDispatchAction必须将submit的name属性指定不同的值以区分每个submit 而在Struts 中将更容易实现这个功能

  当然 我们也可以模拟EventDispatchAction的方法通过request获得和处理参数信息 但这样比较麻烦 在Struts 中提供了另外一种方法 使得无需要配置可以在同一个action类中执行不同的方法(默认执行的是execute方法) 使用这种方式也需要通过请求参来来指定要执行的动作 请求参数名的格式为

  action!method action

  注 由于Struts 只需要参数名 因此 参数值是什么都可以

  下面我就给出一个实例程序来演示如何处理有多个submit的form

  【第 步】实现主页面(more_submit jsp)

  <%@pagelanguage= java import= java util * pageEncoding= GBK %><%@taglibprefix= s uri= /struts tags %><> <head><title>MyJSP hello jsp startingpage</title> </head>  <body><s:formaction= submit action ><s:textfieldname= msg label= 输入内容 /> <s:submitname= save value= 保存 align= left method= save /><s:submitname= print value= 打印 align= left method= print /> </s:form> </body></>

  在more_submit jsp中有两个submit 保存和打印 其中分别通过method属性指定了要调用的方法 save和print 因此 在Action类中必须要有save和print方法

  【第 步】实现Action类(MoreSubmitAction)

  packageaction;

  

  importjavax servlet *; import opensymphony xwork ActionSupport; import apache struts interceptor *; publicclassMoreSubmitActionextendsActionSupportimplementsServletRequestAware privateStringmsg; privatejavax servlet HttpServletRequestrequest; //获得HttpServletRequest对象 publicvoidsetServletRequest(HttpServletRequestrequest) this request=request; //处理savesubmit按钮的动作 publicStringsave()throwsException request setAttribute( result 成功保存[ +msg+ ] ); return save ; //处理printsubmit按钮的动作 publicStringprint()throwsException request setAttribute( result 成功打印[ +msg+ ] ); return print ; publicStringgetMsg() returnmsg; publicvoidsetMsg(Stringmsg) this msg=msg;

  上面的代码需要注意如下两点

  save和print方法必须存在 否则会抛出java lang NoSuchMethodException异常

  Struts Action动作中的方法和Struts x Action的execute不同 只使用Struts Action动作的execute方法无法访问request对象 因此 Struts Action类需要实现一个Struts 自带的拦截器来获得request对象 拦截器如下

   apache struts interceptor ServletRequestAware

  【第 步】配置Struts Action

  struts xml的代码如下

  <?xmlversion= encoding= UTF ?><!DOCTYPEstrutsPUBLIC //ApacheSofareFoundation//DTDStrutsConfiguration //EN dtd ><struts><packagename= demo extends= struts default ><actionname= submit  class= action MoreSubmitAction ><resultname= save >/result jsp</result><resultname= print >/result jsp</result></action></package></struts>

  【第 步】编写结果页(result jsp)

  <%@pagepageEncoding= GBK %><> <head><title>提交结果</title> </head> <body><h >$result</h > </body></>

cha138/Article/program/Java/ky/201311/28505

相关参考

知识大全 LookupDispatchAction类处理一个form多个

Struts1.x系列教程(19):LookupDispatchAction类处理一个form多个  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜

知识大全 javascript面试题汇总

form中的input有哪些类型?各是做什么处理使用的?textradiocheckboxfilebuttonimagesubmitresethidden  submit是button的一个特例也是b

知识大全 asp.net回车触发button按钮事件

  深层次来说这不是ASPNET的问题而是form的submit按钮就是如何设计的  当你的光标焦点进入某个表单元素的时候会激活该表单中第一个(流布局顺从左到右从上至下)type=submit的按钮(

知识大全 asp.net 页面回车触发button按钮事件

  深层次来说这不是ASPNET的问题而是form的submit按钮就是如何设计的  当你的光标焦点进入某个表单元素的时候会激活该表单中第一个(流布局顺从左到右从上至下)type=submit的按钮(

知识大全 使用EventDispatchAction类处理一个form多

Struts1.x系列教程(20):使用EventDispatchAction类处理一个form多  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜

知识大全 解析在zend Farmework下如何创立一个FORM表单

解析在zendFarmework下如何创立一个FORM表单  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 美国13 form 每个季度什么时候披露

美国13form每个季度什么时候披露美国的GDP按季度核算,在每个季度结束后的一个月月末,公布初步数值,再过一个月,公布该季度的重新核算数值,再过一个月,公布该季度的最终定值。相当于每个季度的GDP数

知识大全 一个简单的ASP.NET Forms 身份认证

一个简单的ASP.NETForms身份认证  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  当访问

知识大全 一个简单的ASP.NET Forms 身份认证的实例方法

一个简单的ASP.NETForms身份认证的实例方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 如何将同工作簿中多个工作表合并成一个

如何将同工作簿中多个工作表合并成一个把多个工作表合并到到一张表,最快捷的方法是用巨集处理:例如将多个表合并到总计表:总计表只留一个标题右键点汇总工作表标签,检视程式码,把如下程式码复制进去,F5执行: