天天看点

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 则需要以下方式获取:

继续阅读