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

Struts2 必須在 package 添加 namespace="/" 的原因

     編輯:程式設計疑難解答

現象

Struts 2.1 中,Action 映射報錯 No result defined for XXX action and result success,添加 namespace="/" 後恢復正常。

原因分析

  • Struts2 按 namespace + action name 匹配請求路徑。
  • 默認情況下,若 package 未指定 namespace,則為空字串 "",僅匹配無前綴路徑(如 /actionName)。
  • 若請求路徑為 /xxx/actionName(如項目部署在根路徑下的子路徑),需顯式聲明 namespace="/" 表示根命名空間,或 namespace="/xxx"。
  • Struts 2.0 某些版本默認行為不同,升級到 2.1 後嚴格遵循命名空間匹配規則。

最佳實踐

<package name="default" namespace="/" extends="struts-default">
    <action name="login" class="com.example.LoginAction">
        <result name="success">/welcome.jsp</result>
    </action>
</package>

明確指定 namespace 可避免路徑匹配歧義,特別是多模塊項目。

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