一、Global_Results 全局结果集
<package name="user" namespace="/user" extends="struts-default">
<global-results>
<result name="mainpage">/main.jsp</result>
</global-results>
<action name="index">
<result>/index.jsp</result>
</action>
<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
<result>/user_success.jsp</result>
<result name="error">/user_error.jsp</result>
</action>
</package>
<package name="admin" namespace="/admin" extends="user">
<action name="admin" class="com.bjsxt.struts2.user.action.AdminAction">
<result>/admin.jsp</result>
</action>
</package>
UserAction代码如下:
public class UserAction extends ActionSupport {
private int type;
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
@Override
public String execute() throws Exception {
if(type == 1) return "success";
else if (type == 2) return "error";
else return "mainpage";
}
使用全局结果集可以使同一个包下面的其他Action共享这个结果集。如果想用其他包的配置信息,可以用extends来继承。
二、动态结果集 dynamic_results
Action 定义字符串变量s,根据条件来返回不同的s,xml配置文件通过${s}来动态获取值栈中的值
public String execute() throws Exception {
if(type == 1) r="/user_success.jsp";
else if (type == 2) r="/user_error.jsp";
return "success";
}
三、带参数的结果集
一次request共享一个StackValue,forword只有一次request,因此在一个request中,多个action可以共享StackValue的值。
一个action中的参数可以返回带参数的结果集传递给下一个action(可以用${参数名}来获取并将其传递到下一个页面或者其他action,下个页面通过<s:property value="#paremeters.参数名"/>)。#号是获取ActionContext中的值。这种方式的传递一般用于redirect。