楼主,你的问题是struts2命名空间的问题
struts2跟空间,也就是struts-default的namespace,就是namespace="/"或者namespace=""。
所以你在 中将namesapce设为"/",其实相对于没有设置新的命名空间,而还是使用的默认跟空间。这样,当你以http://localhost:8080/test/list.action 路径访问时,struts显然会在根空间里直接找到list.action。而当你使用http://localhost:8080/text/xx/demo.action路径访问时,首先,struts会在命名为namespace=xx的命名空间里寻找,没有找到,就会到根空间里继续寻找,这时找到了list.action,所以还是能够访问。
你可以做这样的实验,你将里面的namespace设为namespace="demo",然后以http://localhost:8080/text/abc/demo.action路径访问,这时就访问不到这个action了,因为此时,struts现在namespace为“abc”的命名空间里寻找,没有找到,继续在根空间寻找,还是没有,这时就会报异常。这种设置下只有http://localhost:8080/text/demo/demo.action路径可以访问该action。
好了,说了这么多,这个问题应该已经说清楚了,希望你也能够理解了。