首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Struts 1.1 DispatchAction 實戰指南:告別冗長的 if-else 判斷

     編輯:Java 相關知識

痛點:傳統 Action 的單一邏輯限制

在 Struts 1.0 時代,一個 Action 類僅能對應一個 execute 方法,處理單一業務。若需在同一模組實現增刪改查等多個操作,常見做法是在表單隱藏字段 operAt 中傳遞操作類型,在 execute 中用 if-else 判斷分發:

String operAt = myForm.getOperat();
if ("create".equals(operAt)) { ... }
else if ("save".equals(operAt)) { ... }

這導致 Action 類膨脹、邏輯混雜、難以維護。

解決方案:DispatchAction 多方法分發

DispatchAction 允許在一個 Action 類中定義多個業務方法,方法簽名與 execute 一致:

public ActionForward create(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response) throws Exception { ... }

public ActionForward save(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response) throws Exception { ... }

配置 struts-config.xml

關鍵在於 <action> 元素的 parameter 屬性指定請求參數名(如 method):

<action path="/telConsle"
        type="com.example.TelAction"
        name="telForm"
        scope="request"
        validate="false"
        parameter="method" />

前端調用方式

  1. 顯式連結:https://host/app/telConsle.do?method=save
  2. 隱藏字段 + JavaScript:在 JSP 中定義 <input type="hidden" name="method" value="">,按鈕 onclick 設值提交。

建議:使用標準 HTML <input> 而非 <html:hidden>,避免 FormBean 需額外定義 getter/setter,且靜態標籤不受 Struts 標籤庫版本影響。

總結

DispatchAction 將相關業務邏輯聚合在單一 Action 類中,配合 parameter 屬性實現方法級分發,大幅減少樣板代碼,提升可讀性與維護性。是 Struts 1.x 時代處理 CRUD 聚合的最佳實踐之一。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved