目前需要在一个action中根据不同的参数,引导跳转到不同的页面,虽然response可以直接sendRedirect,但是不怎么优雅,没有配置化直观、优雅。下面的代码仅为示例,亲测可用
public String validateUser(){ if(1==1){ return "toCommon"; }else { return SUCCESS; } }
上面的代码中,validateUser是Action中的一个方法,事实上,validateUser在struts2的概念中就是一个action,如validateUser.action 只是在不同的系统中,配置时可以不填.action后缀
假设返回的SUCCESS是正常路径,"toCommon"是个特殊的路径,则struts.xml文件中需配置如下:
<package name="demo" namespace="/demo" extends="apply-base"> <action name="*" method="{1}" class="com.xx.web.action.DemoAction"> <result>/WEB-INF/vm/demo/{1}.vm</result> <result name="toCommon" type="redirectAction"> <param name="namespace">/annotherDemo</param> <param name="actionName">toCommonMethodName</param> <param name="a.pId">${a.pId}</param> <param name="a.aId">${a.a}</param> </result> </action> </package>
一般情况下,每个package都有一个namespace,在跨package的跳转中,namespace非常重要
现在解释一下result=toCommon标签含义
type=redirectAction 表明这个result的type会跳转到其他action
namespace:/annotherDemo 跳转到其他action的namespace,它对应了package的namespace="/demo"
actionName: toCommonMethodName ,这个值其实就是对应的namespace下的方法名,比如方法 validateUser
a.pId:${a.pId} 这是跳转带的参数,它会把请求validateUser的参数中,参数名为a.pId的值赋到这里
网上一搜一大堆相关资料,很多是爬虫爬的,不清晰
参考地址:http://blog.csdn.net/javaimport/article/details/7239196