與其它Action類僅提供單個execute()方法實現單個業務不同,DispatchAction允許你在單個Action類中編寫多個與業務相關的方法。這樣可以減少Action類的數量,並且把相關的業務方法集合在一起使得維護起來更容易。
要使用DispatchAction的功能,需要自己建立一個類,透過繼承抽象的DispatchAction得到。對每個要提供的業務方法必須有特定的方法signature。例如,我們想要提供一個方法來實現對購物車新增商品清單,建立了一個類ShoppingCartDispatchAction提供以下的方法:
public ActionForward addItem(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){
throws Exception;}那麼,這個類很可能還需要一個deleteItem()方法從客戶的購物車中刪除商品清單,還有clearCart()方法清除購物車等等。這時我們就可以把這些方法集合在單個Action類,不用為每個方法都提供一個Action類。
在呼叫ShoppingCartDispatchAction裡的某個方法時,只需在URL中提供方法名作為引數值。就是說,呼叫addItem()方法的 URL看起來可能類似於:
其中method引數指定ShoppingCartDispatchAction中要呼叫的方法。引數的名稱可以任意配置,這裡使用的method只是一個例子。引數的名稱可以在Struts配置檔案中自行設定。
與其它Action類僅提供單個execute()方法實現單個業務不同,DispatchAction允許你在單個Action類中編寫多個與業務相關的方法。這樣可以減少Action類的數量,並且把相關的業務方法集合在一起使得維護起來更容易。
要使用DispatchAction的功能,需要自己建立一個類,透過繼承抽象的DispatchAction得到。對每個要提供的業務方法必須有特定的方法signature。例如,我們想要提供一個方法來實現對購物車新增商品清單,建立了一個類ShoppingCartDispatchAction提供以下的方法:
public ActionForward addItem(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){
throws Exception;}那麼,這個類很可能還需要一個deleteItem()方法從客戶的購物車中刪除商品清單,還有clearCart()方法清除購物車等等。這時我們就可以把這些方法集合在單個Action類,不用為每個方法都提供一個Action類。
在呼叫ShoppingCartDispatchAction裡的某個方法時,只需在URL中提供方法名作為引數值。就是說,呼叫addItem()方法的 URL看起來可能類似於:
其中method引數指定ShoppingCartDispatchAction中要呼叫的方法。引數的名稱可以任意配置,這裡使用的method只是一個例子。引數的名稱可以在Struts配置檔案中自行設定。