首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Struts2 redirectAction 類型寫錯導致參數傳遞失敗的排查

     編輯:程式設計綜合問答

問題現象

在 Struts2 配置中使用 redirectAction 類型重定向到另一個 Action 並傳遞參數:

<action name="police_update" class="..." method="update">
    <result name="success" type="redirectAction">
        <param name="actionName">police_lookInfo</param>
        <param name="policeId">${policeId}</param>
    </result>
</action>

目標 Action police_lookInfo 及當前 Action 均有 policeId 的 getter/setter(類型為 long),但參數始終無法傳遞過去。

根本原因

結果類型名稱拼寫錯誤。Struts2 內建的重定向到 Action 的結果類型名稱為 redirect-action(含連字符),而非 redirectAction(駝峰)。

當使用錯誤類型名時,框架無法識別該結果類型,會回退到默認的分發器行為,導致參數解析與傳遞邏輯不生效。

正確配置

<result name="success" type="redirect-action">
    <param name="actionName">police_lookInfo</param>
    <param name="policeId">${policeId}</param>
</result>

補充說明

  • redirect-action 會生成 HTTP 302 重定向,瀏覽器地址欄 URL 會變化;
  • 參數會以查詢字符串形式附加在新 URL 上(如 police_lookInfo.action?policeId=123);
  • 目標 Action 需聲明同名屬性及 setter 以接收參數;
  • 若需傳遞對象或複雜數據,建議使用 Session 或 Flash 作用域。

避坑指南

Struts2 許多內建結果類型、攔截器名稱均採用連字符分隔單詞(如 redirect-action, chain, json 等),切勿按 Java 駝峰習慣拼寫。查閱官方文檔或 struts-default.xml 確認標準名稱。

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