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

Struts2 Action 映射 404:namespace 重複與路徑匹配排查

     編輯:程式設計綜合問答

錯誤現場

HTTP Status 404 - There is no Action mapped for namespace [/] and action name [zy] associated with context path [/e-Learning].

表單提交 `action="<%=basePath%>zy?cou_id=1"`,Struts 配置:

<package name="stu" extends="struts-default" name="/">
    <action name="zy" ...>...</action>
</package>

核心問題

  1. package 元素重複 `name` 屬性:`` 兩個 `name`,第二個 `name="/"` 被當作 `namespace="/"`,導致命名空間解析異常。
  2. namespace 與 action 映射不匹配:表單 action 路徑包含 `basePath`(如 `/e-Learning/`),但 Struts 默認 namespace 為 `/`,需確保 `` 或表單 action 使用相對路徑 ``。

修正配置

<struts>
    <package name="stu" namespace="/e-Learning" extends="struts-default">
        <action name="zy" class="el.com.web.action.stu.StudentAction" method="findCourse">
            <result name="success">student/OEStudent/stu_zy.jsp</result>
        </action>
    </package>
</struts>

最佳實踐

  • JSP 中使用 `` 而非手寫路徑,標簽庫自動處理 namespace 與 context path。
  • 啟用 Struts 開發模式 `struts.devMode=true`,控制台輸出詳細映射表,快速定位 404。
  • 檢查 `web.xml` 中 `FilterDispatcher`/`StrutsPrepareAndExecuteFilter` 的 `url-pattern` 是否為 `/*`。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved