目前需要在一个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