通过设置action的返回result类型为action来跳转其他action,同时,通过parms参数传值。这种方式有个缺点,是action之间传值的方式是GET方式,跳转的action的url中会带上参数
package com.zzn.action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.ActionSupport;
@Results(
{
@Result(name="aaaa",location="aaaa!aaaa.action",type="redirect",
params = {"flag","${flag}","flag2","${flag2}"}),
@Result(name="bbbb",location="bbbb!bbbb.action",type="redirect",
params = {"flag","${flag}","flag2","${flag2}"}
)
}
)
public class MyAction extends ActionSupport{
private String flag ;
private String flag2;
public String jump(){
if(flag!=null&&flag.equals("aaaa")){
return "aaaa";
}else{
return "bbbb";
}
}
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
public String getFlag2() {
return flag2;
}
public void setFlag2(String flag2) {
this.flag2 = flag2;
}
}
package com.zzn.action;
import com.opensymphony.xwork2.ActionSupport;
public class AaaaAction extends ActionSupport {
private String flag;
private String flag2;
public String aaaa(){
System.out.println("我调用的aaaa方法"+flag+"~~~~~"+flag2);
return "page";
}
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
public String getFlag2() {
return flag2;
}
public void setFlag2(String flag2) {
this.flag2 = flag2;
}
}
package com.zzn.action;
import com.opensymphony.xwork2.ActionSupport;
public class BbbbAction extends ActionSupport {
private String flag;
private String flag2;
public String bbbb(){
System.out.println("我调用的bbb方法"+flag);
return "page";
}
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
public String getFlag2() {
return flag2;
}
public void setFlag2(String flag2) {
this.flag2 = flag2;
}
}
通常,在配置文件中都是在一个动作中声明它要引用的JSP如:
<action class=”” name=””>
</action>
有时候我们需要将结果指向另一个动作.可以如此:
<action name ="rsa01002Action" class ="rsa01002Action" >
</action>
将类型指定为redirect这就相当于JSP中的跳转一样.还有种写法:
<action name ="app09002Action" class ="app09002Action" >
</action>
这样和上面的差不多,只是将要跳转到的动作的名字放在了外面.但下面这种写法传的是动作的名称,所以后面没有加.do.前面写法后有,但好象不加也行.
上面两种方法就是动作间的跳转,但有时候需要在跳转的时候传递一些参数.参数可能是字符,也可能是其它对象.方法如下:
<action name ="app09002Action" class ="app09002Action" >
</action>
下面一个参数就是要传递过去的参数.name=”userId”即app10001Action(跳转目标)中接收参数的变量名.而${userId}表示是app09002Action(跳转起点)中在传过去的变量.这个变量的值要在execute()方法完成前进行赋值,即在该方法的return 语句前进行赋值.当然,为了struts框架能获得该值,并能设置到目录动作中,需要我们将起点动作和目录动作中的对应的两个变量都设为public或设置对应的getter,setter方法.