本文為原創(chuàng),如需轉(zhuǎn)載,請(qǐng)注明作者和出處,謝謝!
上一篇:
Struts1.x系列教程(18):使用DispatchAction類調(diào)用多個(gè)Action方法
有時(shí)在HTML form中需要提供多個(gè)提交按鈕,這時(shí)LookupDispatchAction類就派上用場(chǎng)了。LookupDispatchAction是DispatchAction的子類,用于處理客戶端代碼中有一個(gè)Form含有多個(gè)提交按鈕的情況。為了使用LookupDispatchAction,首先來(lái)編寫客戶端代碼,代碼如下:
<html:form action="myaction">

<html:submit property="action">
<bean:message key="submit.print" />
</html:submit>
<html:submit property="action">
<bean:message key="submit.save" />
</html:submit>
</html:form>
其中submit.print和submit.save是屬性文件中的key。action實(shí)際上是提交按鈕的name屬性值。在提交時(shí),會(huì)將property和<bean:message key="..."
/>作為請(qǐng)求參數(shù)和參數(shù)值傳給Struts動(dòng)作。如save按鈕被單擊時(shí),請(qǐng)求URL為http://localhost:8080/.../myaction.do?action=save。其中save為submit.save在屬性文件中對(duì)應(yīng)的屬性值,也就是說(shuō)submit.save = save。
接下來(lái)我們編寫一個(gè)LookupDispatchAction的子類,代碼如下:
package action;
import org.apache.struts.actions.LookupDispatchAction;

public class MyLookupDispatchAction extends LookupDispatchAction
{
// 為了方便描述,在這里未使用屬性文件,只是直接將key和value的映射添加到Map對(duì)象中
// 讀者可以在getKeyMethodMap方法中從屬性文件中讀取相應(yīng)的key-value對(duì)
// 來(lái)添加到Map對(duì)象中
protected Map getKeyMethodMap()
{
Map m = new HashMap();
m.put("submit.print", "print");
m.put("submit.save", "save");
return m;
}
public ActionForward print (ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
{
// 處理print代碼
}
public ActionForward save(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
{
// 處理save代碼
}
}
在編寫LookupDispatchAction的子類時(shí)要注意必須實(shí)現(xiàn)getKeyMethodMap方法,在這個(gè)方法中需要進(jìn)行key和Action方法的映射。下面的代碼用來(lái)配置MyLookupDispatchAction。
<action path="/moresubmit" type="action.MyLookupDispatchAction" parameter="action" />
其中parameter屬性指定了請(qǐng)求URL中由提交按鈕生成的請(qǐng)求參數(shù)名。
下一篇:Struts1.x系列教程(20):使用EventDispatchAction類處理一個(gè)form多個(gè)submit
新浪微博:http://t.sina.com.cn/androidguy 昵稱:李寧_Lining