天天看點

Action 的 namespace

namespace 屬性是一個可選屬性,該屬性定義該包的命名空間。

namespace決定了action 的通路路徑,預設為 "" ,可以接收所有的action

Struts2 提供了命名空間的功能,主要是為了處理同一個 Web 應用中包含同名的 Action 的情況,以命名空間的方式來管理Action,可以實作同一個命名空間裡不能有同名的 Action,不同的命名空間裡可以有同名的Action.

Struts2 不支援為單獨的Action 設定命名空間,如果在配置 package 時沒有指定 namespace 屬性,則該包下的所有 Action 處于預設的包空間下。

例子:

  1. <?xml version="1.0" encoding="UTF-8" ?> 
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd"> 
  5. <struts> 
  6.     <constant name="struts.i18n.encoding" value="GBK" /> 
  7.     <constant name="struts.devMode" value="true" /> 
  8.     <!-- 使用預設命名空間 --> 
  9.     <package name="one" extends="struts-default"> 
  10.         <!-- 相同的 action --> 
  11.         <action name="index"> 
  12.             <result name="error">/error.jsp</result> 
  13.             <result name="success">/Hello.jsp</result> 
  14.         </action> 
  15.     </package> 
  16.     <!-- 使用指定命名空間 --> 
  17.     <package name="two" extends="struts-default" namespace="/two"> 
  18.         <!-- 相同的 action --> 
  19.         <action name="index"> 
  20.             <result name="error">/error.jsp</result> 
  21.             <result name="success">/World.jsp</result> 
  22.         </action> 
  23.     </package> 
  24. </struts> 

從上面的 struts.xml 配置檔案中,配置了兩個包,one 和 two ,配置one包時,設定命名空間為預設的命名空間。配置 two包時,設定了該包的命名空間為 /two

如果需要通路two包中的 index.action 則需要以下方式擷取:

繼續閱讀