java

位置:IT落伍者 >> java >> 浏览文章

Struts1.x系列教程(20):使用EventDispatchAction类处理一个form多


发布日期:2019年07月25日
 
Struts1.x系列教程(20):使用EventDispatchAction类处理一个form多

虽然LookupDispatchAction类可以很好地处理拥有多个提交按钮的Form但是必须要和属性文件相关联而且还得在getKeyMethodMap方法中进行key和Action方法的映射使用起来十分不方便从Struts开始加入了另一个用于处理多个提交动作的EventDispatchAction类这个类也是DispatchAction的子类它在使用上要比LookupDispatchAction类容易的多EventDispatchAction类的基本原理是通过<action>元素的parameter属性指定多个动作中间用逗号()分隔每个动作实际上就是<htmlsubmit>标签的property属性值这样EventDispatchAction类就可以根据每个<htmlsubmit>标签的属性值来确定用户按的是哪个提交按钮了

我们可以按如下三步来使用EventDispatchAction类

【第步】实现EventDispatchAction的子类

在<samples工程目录>\src\action目录中建立一个MyEventDispatchActionjava文件代码如下

packageaction;

importjavaioPrintWriter;

importjavaxservlethttp*;

importorgapachestrutsaction*;

importorgapachestrutsactions*;

publicclassMyEventDispatchActionextendsEventDispatchAction

{

//处理print动作

publicActionForwardprint(ActionMappingmappingActionFormform

HttpServletRequestrequestHttpServletResponseresponse)

{

try

{

responsesetCharacterEncoding(GBK);

PrintWriterout=responsegetWriter();

outprintln(打印成功!);

}

catch(Exceptione)

{

}

returnnull;

}

//处理save动作

publicActionForwardsave(ActionMappingmappingActionFormform

HttpServletRequestrequestHttpServletResponseresponse)

{

try

{

responsesetCharacterEncoding(GBK);

PrintWriterout=responsegetWriter();

outprintln(保存成功!);

}

catch(Exceptione)

{

}

returnnull;

}

}

在MyEventDispatchAction类中有两个方法print和save分别用来处理property属性值为printsave的<htmlsubmit>标签提交的请求动作

【第步】配置EventDispatchAction类

打开strutsconfigxml文件在 <actionmappings>元素中加入如下的内容

<actionname=firstValidatorFormpath=/event

type=actionMyEventDispatchActionvalidate=falseparameter=printsave/>

【第步】实现有多个提交按钮的JSP页面

在Web根目录中建立一个moreSubmitjsp文件代码如下

<%@pagepageEncoding=GBK%>

<%@tagliburi=htmlprefix=html%>

<html>

<head>

<title>多提交演示</title>

</head>

<body>

<html:formaction=event>

name<html:textproperty=name/>&nbsp;&nbsp;<p>

<html:submitproperty=printvalue=打印/>

<html:submitproperty=savevalue=保存/>

</html:form>

</body>

</html>

在编写moreSubmitjsp文件时要注意打印保存按钮的property属性必须和<action>动作中的parameter参数值一致也就是printsave

启动Tomcat后在IE中输入如下的URL来测试程序

为了区别提交请求参数和其他参数在<htmlsubmit>标签的property属性值还可以有一个后缀x(<action>元素的parameter属性值仍然是print save打印按钮的代码可以写成如下形式

<html:submitproperty=printxvalue=打印/>

上一篇:Struts从零开始四、Struts中的国际化

下一篇:Hibernate中Criteria的用法