您的位置:首页 > 其它

本人遇到的关于namespace的一点小问题总结

2011-03-06 10:23 549 查看
看下我的配置文件:
struts.xml配置文件如下:



test.xml配置文件如下:



首先说一下本人遇到的一个低级问题:
在struts.xml文件中,运用文件包含其他模块xml,如果按上面图示,会出现请求的action(如http://localhost:8080/itnetwork/menus.action)与action处理返回结果错误的情况(说明:不是没结果,是返回的不是期望的页面),归根到底都是本人没有理解struts2寻找action的流程!汗~~
原因总结:注意上图红色的标识,因为在struts.xml中有默认的action,而且是配置了namespace="/",而test.xml中又没有配置namespace="/"!所以test.xml默认的namespace是"",根据struts2响应请求的机制,应该是先在namespace="/"中查找对应球、请求的action,如果没找到,就到namespace=""中查找! 所以本人在struts.xml中配置了默认的index action,也就是可以在namespace="/"中查找到action处理,就不会再去test.xml中namespace=""中查找了!
引用网上的资料
使用package可以将逻辑上相关的一组Action,Result,Interceptor等组件分为一组,Package有些像对象,可以继承其他的Package,也可以被其他package继承,甚至可以定义抽象的Package。
Package的可以使用的属性:
属性
是否必须
说明

name 是 Package的表示,为了让其他的package引用

extends 否 从哪个package继承行为

namespace 否 参考Namespace配置说明

abstract 否
定义这个package为抽象的,这个package中不需要定义action

由于struts.xml文件是自上而下解析的,所以被继承的package要放在继承package的前边。Namespace将action分成逻辑上的不同模块,每一个模块有自己独立的前缀。使用namespace可以有效的避免action重名的冲突,例如每一个package都可以有自己独立的Menu和Help action,但是事项方式各有不同。Struts2标签带有namespace选项,可以根据namespace的不同向服务器提交不同的package的action的请求。
“/”表示根namespace,所有直接在应用程序上下文环境下的请求(Context)都在这个package中查找。
“”表示默认namespace,当所有的namespace中都找不到的时候就在这个namespace中寻找
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wrewrter/archive/2009/11/19/4825105.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: