2 sgsy 2013 sgsy_2013 于 2016.03.15 14:22 提问

求解,struts2的struts.xml为什么必须添加namespace="/"

我用的struts2.1.但是总是报错No result defined for XXXaction and result success。
后来我在package里加了namespace="/"就好了。
这是我在别的地方找到的方法?
但是为什么会这样?这是struts2自身的bug吗?

3个回答

sgsy_2013
sgsy_2013   2016.03.16 09:39
已采纳

可是我在书上的例子看到package是不用namespace="/"的啊?书上是struts2.0.我自己用myeclipse做的struts2.1就要用了。这是为什么?是2.0默认查找action的位置就是在根namespace下,所以不用加那个声明吗?

u013772876
u013772876   2016.03.15 15:21

namespace命名空间是区分不同的action!
默认的命名空间是空字符串””,也就是不设置namespace属性时候的命名空间。我们在匹配一个action的时候,先到它指定的命名空间中去找,如果没有再到这个默认的命名空间中去找。Struts2还支持根命名空间(“/”),当一个request直接请求context path下面的资源时,struts2会首先到跟命名空间下去寻找匹配的action,例如请求是http://server/myapp/bar.action,那么我们首先会去”/”命名空间下去寻找这个action

luochoudan
luochoudan   Ds   Rxr 2016.03.15 15:22

不是bug,struts2标签中,有一个namespace属性,可以根据namespace的不同而向服务器提交不同的 package的action的请求。
“/”表示根namespace,所有直接在应用程序上下文环境下的请求(Context)都在这个package中查找。"”表示默认de namespace,当所有的namespace中都找不到的时候就在这个namespace中寻找。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!