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

Struts2 表單提交跳轉 Action 404:namespace 與 action 名稱映射不匹配

     編輯:程式設計綜合問答

表單:<form action="control/productmanage_add.action">

配置:

<package name="qing" namespace="/control" extends="struts-default">
  <action name="productmanage_*" class="..." method="{1}"> ... </action>
</package>

錯誤:There is no Action mapped for namespace [/] and action name [productmanage_add]

根因分析

  1. 表單 action 路徑包含 namespace:control/productmanage_add.action → Struts2 解析為 namespace=/control, actionName=productmanage_add。**正確**。
  2. 但錯誤顯示 namespace [/]:說明請求**未進入 /control namespace**,可能原因:
    — web.xml filter-mapping <url-pattern>*.action</url-pattern> 但請求路徑不匹配。
    — 部署路徑 (context path) 導致解析偏差。

修正建議

  1. 表單 action 使用相對路徑 + 動態 contextPath:
    <form action="${pageContext.request.contextPath}/control/productmanage_add.action">
  2. 檢查 struts.xml 中 package namespace 確為 "/control"(區分大小寫,以斜槓開頭)。
  3. 移除表單 action 結尾多餘雙引號:method="post" "> → method="post">。

調試技巧

訪問 /struts-config-browser/index.jsp 查看實際映射表,確認 /control namespace 下是否存在 productmanage_add。

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