首页 > 代码库 > Struts2 Result
Struts2 Result
Result类型:
1.dispatcher(默认):服务器跳转到结果页面,Jsp页面或者html相当于<jsp:forword>
2.redirect:重定向到一个页面
3.chain(链条):forword到另外一个Action
struts2API example:
<package name="public" extends="struts-default"> <!-- Chain creatAccount to login, using the default parameter --> <action name="createAccount" class="..."> <result type="chain">login</result> </action> 转发到另外一个package中Action <action name="login" class="..."> <!-- Chain to another namespace --> <result type="chain"> <param name="actionName">dashboard</param> <param name="namespace">/secure</param> </result> </action> </package> <package name="secure" extends="struts-default" namespace="/secure"> <action name="dashboard" class="..."> <result>dashboard.jsp</result> </action> </package>
4.redirectAction:重定向到一个Action
5.freemarker
6.httpheader
7.stream(下载)
8.velocity
9.xslt
10.plaintext
11.tiles
<global-results>全局结果集该package下的任意一个Action都能使用这个结果集
其他的package只要继承了定义了全局结果集的package,也能使用该结果集
<package name="user" namespace="/user" extends="struts-default"> <global-results> <result name="mainpage">/main.jsp</result> </global-results> <action name="user" class="com.zr.struts2.action.UserAction"> <result name="success" >/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.zr.struts2.action.AdminAction"> <result name="admin">/admin.jsp</result> </action> </package>
动态的results:
<package name="user" namespace="/user" extends="struts-default"> <action name="user" class="com.zr.struts2.action.UserAction"> <result name="success">${r}</result> </action> </package>
${r}(专门用在struts2配置文件里面的ogln表达式) 从value stack中取出r的值
public class UserAction extends ActionSupport { (对于任何一个Action他对应的属性都会放在Value Stack中,r和type会放在ValueStack中) private int type; private String r; public String getR() { return r; } public void setR(String r) { this.r = r; } public int getType() { return type; } public void setType(int type) { this.type = type; } @Override public String execute() throws Exception { if (type == 1) r="/user_success.jsp"; if (type == 2) r="/user_error.jsp"; return "success"; } }
带参数的result:
<action name="user" class="com.zr.struts2.action.UserAction"> <result name="success" type="redirect">/user_success.jsp?t=${type}</result> </action>
在jsp页面取出t: <s:property value="http://www.mamicode.com/#parameters.t"/>(重定向ValueStack为null,在Stack Context里面取parameters的值)
如果type=dispatcher<s:property value="http://www.mamicode.com/type"/>(转发,直接在ValueStack里面取,所以只有重定向才需要传递参数)
补充:一个request请求共享一个ValueStack
Struts2 Result