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

Struts2 alias 攔截器實現 Action 鏈間參數傳遞

     編輯:Java 相關知識

場景

Action A 返回 chain 結果跳轉到 Action B,需將 A 中的字段映射到 B 的不同字段名。

配置步驟

1. web.xml 註冊 Struts2 Filter(標準)

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

2. struts.xml 定義鏈與別名映射

<package name="default" extends="struts-default">
    <action name="XXX" class="XXXAction">
        <result name="success">/ok.jsp</result>
        <result name="input" type="chain">
            <param name="actionName">input_error</param>
        </result>
    </action>

    <action name="input_error" class="InputErrorAction">
        <!-- 別名映射:將 error_status→status, error_desc→desc -->
        <param name="aliases">#{'error_status':'status','error_desc':'desc'}</param>
    </action>
</package>

原理

  • chain 結果類型在服務端內部轉發,保持同一請求上下文。
  • alias 攔截器攔截參數,按 aliases Map 重命名後注入目標 Action。
  • 目標 Action 必須提供對應的 setStatus/setDesc 方法。

注意事項

  1. 被映射字段必須有 getter/setter,否則注入為 null。
  2. chain 僅適用於同一應用內 Action 跳轉;跨應用需用 redirectAction。
  3. Struts 2.5+ 推薦使用 ActionChainResult 類名配置。

總結

alias 攔截器配合 chain 結果,優雅解決 Action 鏈中字段名不一致的參數傳遞問題。

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