Struts2中namespace的用法

转自:http://blog.163.com/weblin@126/blog/static/16868442520107172320306/

Struts2中关于Action的namespace在很多地方出现,如struts.xml、form标签等等,有些莫名其妙的错误就是由于namespace设置错误造成的。如无法找到匹配的Action,访问不了result指定的页面等等。
namespace的作用是定义访问Action的url,在不同的namespace中可以定义同名的action,不同的包可以共享同一个namespace,可以通过namespace控制action的访问。

1. <s:form>标签中如何指定namespace,是否必须指定namespace?
如果你访问的jsp路径与action的namespace重合,那么并不需要指定namespace,struts2会首先自动寻找跟你jsp路径相同的namespace,如果没有会寻找默认namespace。
如果form标签中没有指定namespace,那么会使用jsp路径作为namespace,在struts.xml中寻找action。如果form标签中指定了namespace,那么直接使用指定的namespace查找action。
例:
访问URL="http://localhost:8080/struts2/MainWeb/login.jsp",中"/MainWeb"为Web应用程序下的访问路径,如果在login.jsp中的form标签中没有指定namespace,那么默认action的namespace为"/MainWeb";如果login.jsp中设置了form标签的namespace<s:form namespace="/MainWeb"/>,那么action的namespace则为"/MainWeb"。

2. 在struts.xml的<package>标签中如何指定namespace?
在<package>中指定了namespace,不仅为action提供了namespace,也同时规定了result返回结果的路径。在result中可以使用绝对路径和相对路径对返回结果进行配置,绝对路径以"/"开头,代表了Web应用程序上下文的根目录,相对路径不以"/"开头。绝对路径不受Action的namespace影响,而相对路径则以Action的namespace为根路径。

3. 举例说明
默认状态

Struts.xml代码
  1. <package name="default" extends="struts-default">  

Jsp代码
  1. <s:form name="form_login" action="userInfoLogin" theme="simple">  


指定状态
Struts.xml代码
  1. <package name="MainWeb" extends="struts-default" namespace="/MainWeb">  

Jsp代码
  1. <s:form name="form_login" action="userInfoLogin" namespace="/MainWeb" theme="simple"> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值