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

Struts 1.x 系列教程(20):EventDispatchAction 處理單一表單多提交按鈕

     編輯:Java 相關知識

前言

EventDispatchAction(Struts 1.2.9+ 引入)同樣繼承 DispatchAction,專為單一表單包含多個提交按鈕設計。優於 LookupDispatchAction:無需屬性檔、無需實作 getKeyMethodMap(),直接以按鈕 property 屬性值決定呼叫方法。

三步驟實作

步驟 1:實作 Action 子類別

package action;
import org.apache.struts.actions.EventDispatchAction;
import javax.servlet.http.*;
import org.apache.struts.action.*;

public class MyEventDispatchAction extends EventDispatchAction {
    // 對應 property="print"
    public ActionForward print(ActionMapping mapping, ActionForm form,
                               HttpServletRequest request, HttpServletResponse response) {
        try {
            response.setCharacterEncoding("GBK");
            response.getWriter().println("列印成功!");
        } catch (Exception e) {}
        return null;
    }

    // 對應 property="save"
    public ActionForward save(ActionMapping mapping, ActionForm form,
                              HttpServletRequest request, HttpServletResponse response) {
        try {
            response.setCharacterEncoding("GBK");
            response.getWriter().println("儲存成功!");
        } catch (Exception e) {}
        return null;
    }
}

步驟 2:配置 struts-config.xml

<action name="firstValidatorForm"
        path="/event"
        type="action.MyEventDispatchAction"
        validate="false"
        parameter="print,save" />
  • parameter="print,save":以逗號分隔列出所有支援的按鈕 property 值。
  • 框架會依提交按鈕的 property 自動導向同名方法。

步驟 3:JSP 表單多提交按鈕

<%@ taglib uri="https://struts.apache.org/tags-html" prefix="html" %>
<html:form action="event">
    姓名:<html:text property="name" /><br>
    <html:submit property="print" value="列印" />
    <html:submit property="save" value="儲存" />
</html:form>

關鍵:按鈕 property 值(print、save)必須與 parameter 列表完全一致。

進階:property 後綴 .x

HTML 規格中,<input type="image"> 或某些瀏覽器提交時會送出 name.x、name.y 座標。Struts 允許按鈕寫為 property="print.x",而 parameter 仍填 print,save,框架會自動忽略 .x 後綴進行匹配。

測試

啟動 Tomcat,訪問 https://localhost:8080/samples/moreSubmit.jsp,點擊「列印」顯示「列印成功!」,點擊「儲存」顯示「儲存成功!」。

總結

EventDispatchAction 以「按鈕 property 對應方法名」的直覺約定,大幅簡化多提交按鈕處理,是現代 Struts 1.x 專案的首選方案。

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