java

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

Struts1.x系列教程(19):LookupDispatchAction类处理一个form多个


发布日期:2020年07月24日
 
Struts1.x系列教程(19):LookupDispatchAction类处理一个form多个

有时在HTML form中需要提供多个提交按钮这时LookupDispatchAction类就派上用场了LookupDispatchAction是DispatchAction的子类用于处理客户端代码中有一个Form含有多个提交按钮的情况为了使用LookupDispatchAction首先来编写客户端代码代码如下

<html:formaction=myaction>

<html:submitproperty=action>

<bean:messagekey=submitprint/>

</html:submit>

<html:submitproperty=action>

<bean:messagekey=submitsave/>

</html:submit>

</html:form>

其中submitprint和submitsave是属性文件中的keyaction实际上是提交按钮的name属性值在提交时会将property和<beanmessage key=…… />作为请求参数和参数值传给Struts动作如save按钮被单击时请求//localhost/……/myactiondo?action=save其中save为submitsave在属性文件中对应的属性值也就是说submitsave = save

接下来我们编写一个LookupDispatchAction的子类代码如下

packageaction;

importorgapachestrutsactionsLookupDispatchAction;

publicclassMyLookupDispatchActionextendsLookupDispatchAction

{

//为了方便描述在这里未使用属性文件只是直接将key和value的映射添加到Map对象中

//读者可以在getKeyMethodMap方法中从属性文件中读取相应的keyvalue对

//来添加到Map对象中

protectedMapgetKeyMethodMap()

{

Mapm=newHashMap();

mput(submitprintprint);

mput(submitsavesave);

returnm;

}

publicActionForwardprint(ActionMappingmappingActionFormform

HttpServletRequestrequestHttpServletResponseresponse)

{

//处理print代码

}

publicActionForwardsave(ActionMappingmappingActionFormform

HttpServletRequestrequestHttpServletResponseresponse)

{

//处理save代码

}

}

在编写LookupDispatchAction的子类时要注意必须实现getKeyMethodMap方法在这个方法中需要进行key和Action方法的映射下面的代码用来配置MyLookupDispatchAction

<actionpath=/moresubmittype=actionMyLookupDispatchActionparameter=action/>

其中parameter属性指定了请求URL中由提交按钮生成的请求参数名

上一篇:Struts表单验证设计指南

下一篇:用ActionForward优化你的Struts应用程序