一、Action名称的搜索顺序
1、获得请求路径URL。例如url是:http://server/struts2/path1/path2/path3/test.action
2、首先寻找namespace为path1/path2/path3的package。如果不存在这个package,则执行步骤3.如果存在这个package。则在这个package中寻找名字为test的action。当在该package中找不到action时就会直接跑到默认namespace里的package里面寻找action(默认的命名空间为空字符串).如果在默认的namespace的package中还找不到action,页面提示找不到action。
3、寻找namespace为/path1/path2的package,如果不存在这个package,则转到步骤4。如果存在这个package。则在这个package中寻找名字为test的action。当在该package中找不到action时就会直接跑到默认namespace里的package里面寻找action(默认的命名空间为空字符串).如果在默认的namespace的package中还找不到action,页面提示找不到action。
4、寻找namespace为/path1的package,如果不存在这个package,则转到步骤5。如果存在这个package。则在这个package中寻找名字为test的action。当在该package中找不到action时就会直接跑到默认namespace里的package里面寻找action(默认的命名空间为空字符串).如果在默认的namespace的package中还找不到action,页面提示找不到action。
5、寻找namespace为/的package。如果存在这个package。则在这个package中寻找名字为test的action。当在该package中找不到action时就会直接跑到默认namespace里的package里面寻找action(默认的命名空间为空字符串).如果在默认的namespace的package中还找不到action,页面提示找不到action。
二、Action配置的各项默认值
<package name="struts" namespace="/test" extends="struts-default">
<action name="helloWorld" class="com.struts2.test.HelloWorld" method="excute">
<result name="SUCCESS">/WEB-INF/test/helloWorld.jsp</result>
</action>
</package>
1)如果没有为action指定class,默认是ActionSupport。通过ActionSupport的excute方法寻找相关视图。
2)如果没有为action指定method,默认执行action中的excute方法。
3)如果没有指定result的那么属性,默认值为success。