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

Struts2 多包配置陷阱:package 元素的 name 屬性必須全局唯一,否則導致 Action 映射衝突

     編輯:程式設計疑難解答

問題現象

兩個 Action 類代碼、配置幾乎相同(僅類名不同),一個正常訪問,另一個報錯 No result defined for action... 或 404。

根因

在 struts.xml 中引入多個包配置文件時:

<package name="default" namespace="/" extends="struts-default"> ... </package>
<package name="default" namespace="/user" extends="struts-default"> ... </package> <!-- name 重複! -->

Struts2 要求每個 <package> 的 name 屬性在整個應用中唯一。重複 name 導致後載入的包覆蓋先前包的 Action 映射,引發路由錯誤。

修正

<package name="user_module" namespace="/user" extends="struts-default"> ... </package>
<package name="admin_module" namespace="/admin" extends="struts-default"> ... </package>

name 建議使用模塊名,namespace 對應 URL 前綴。

最佳實踐

  • 模塊化配置:每個業務模塊一個 package 文件,通过 <include file="struts-user.xml"/> 引入。
  • 命名規範:name="模塊名_module",namespace="/模塊名"。
  • 避免使用默認 name="default",易衝突。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved