Struts1.x系列教程(19):LookupDispatchAction類處理一個form多個submit
本文為原創,如需轉載,請注明作者和出處,謝謝!
上一篇:Struts1.x系列教程(18):使用DispatchAction類調用多個Action方法
有時在HTML form中需要提供多個提交按鈕,這時LookupDispatchAction類就派上用場了。LookupDispatchAction是DispatchAction的子類,用于處理客戶端代碼中有一個Form含有多個提交按鈕的情況。為了使用LookupDispatchAction,首先來編寫客戶端代碼,代碼如下:
新浪微博:http://t.sina.com.cn/androidguy 昵稱:李寧_Lining
上一篇:Struts1.x系列教程(18):使用DispatchAction類調用多個Action方法
有時在HTML form中需要提供多個提交按鈕,這時LookupDispatchAction類就派上用場了。LookupDispatchAction是DispatchAction的子類,用于處理客戶端代碼中有一個Form含有多個提交按鈕的情況。為了使用LookupDispatchAction,首先來編寫客戶端代碼,代碼如下:
<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>


<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實際上是提交按鈕的name屬性值。在提交時,會將property和<bean:message key="..." />作為請求參數和參數值傳給Struts動作。如save按鈕被單擊時,請求URL為http://localhost:8080/.../myaction.do?action=save。其中save為submit.save在屬性文件中對應的屬性值,也就是說submit.save = save。
接下來我們編寫一個LookupDispatchAction的子類,代碼如下:
package action;
import org.apache.struts.actions.LookupDispatchAction;

public class MyLookupDispatchAction extends LookupDispatchAction
{
// 為了方便描述,在這里未使用屬性文件,只是直接將key和value的映射添加到Map對象中
// 讀者可以在getKeyMethodMap方法中從屬性文件中讀取相應的key-value對
// 來添加到Map對象中
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代碼
}
}
import org.apache.struts.actions.LookupDispatchAction;


public class MyLookupDispatchAction extends LookupDispatchAction
{
// 為了方便描述,在這里未使用屬性文件,只是直接將key和value的映射添加到Map對象中
// 讀者可以在getKeyMethodMap方法中從屬性文件中讀取相應的key-value對
// 來添加到Map對象中
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的子類時要注意必須實現getKeyMethodMap方法,在這個方法中需要進行key和Action方法的映射。下面的代碼用來配置MyLookupDispatchAction。
<action path="/moresubmit" type="action.MyLookupDispatchAction" parameter="action" />
其中parameter屬性指定了請求URL中由提交按鈕生成的請求參數名。
下一篇:Struts1.x系列教程(20):使用EventDispatchAction類處理一個form多個submit
《Android高薪之路:Android程序員面試寶典 》http://book.360buy.com/10970314.html
新浪微博:http://t.sina.com.cn/androidguy 昵稱:李寧_Lining
posted on 2009-02-23 21:34 銀河使者 閱讀(2810) 評論(0) 編輯 收藏 所屬分類: java 、web 、 原創 、struts1.x