日期:2014-05-17  浏览次数:20722 次

struts.xml中namespace的问题
index.jsp

<s:form action="struts_test.action" method="post" namespace="/aa">
   <input type="text" id="name" name="name"/>
   <input type="submit" id="submit" value="提交"/>
</s:form>


struts.xml

<package name="test" extends="struts-default" namespace="/bb">
<action name="struts_*" class="com.qlw.action.StrutsAction" method="{1}">
<result name="success">/test.jsp</result>
</action>
</package>

<package name="test2" extends="struts-default" namespace="/">
<action name="struts_*" class="com.qlw.action.StrutsAction" method="{1}">
<result name="success">/test2.jsp</result>
</action>
</package>

<package name="test3" extends="struts-default" namespace="">
<action name="struts_*" class="com.qlw.action.StrutsAction" method="{1}">
<result name="success">/test3.jsp</result>
</action>
</package>


在index.jsp页面提交时  进入第二个package  地址栏中显示的url为:
http://localhost:8080/Struts2_Src_Analysis/aa/struts_test.action


当注释掉第三个package时  同样的操作  也是进入第二个package  但是地址栏中显示的url:
http://localhost:8080/Struts2_Src_Analysis/struts_test.action


谁能解释下原因?

------解决方案--------------------
namespace为虚拟路径,你可以理解为像java的包一样。
比如你现在项目/sys/user/userList.jsp这个文件发出的action请求userList.action,他会最先去/sys/user/下面去找userList.action,如果没有他会往上一层找。以此类推,没有则告诉你没有该action。