- 在Action中的Result有一个type属性,主要有4种常用的用法。
1.
服务器端跳转,地址栏不改变。<result type="dispatcher"> /DemoJsp1.jsp </result>
传值的方法:
地址栏写:http://localhost:8080/strutsdemo/hoho/s1?t=1
JSP页面写:<s:property value="t"/>
struts.xml里写:
就可接收到参数,因为服务器跳转,他们共用valueStack里的内容。<result type="dispatcher"> /DemoJsp1.jsp </result>
- 2.
客户端跳转,地址栏改变。<action name="s2"> <result type="redirect"> /DemoJsp2.jsp </result> </action>
传值的方法:
地址栏写:http://localhost:8080/strutsdemo/hoho/s2?t=1
<s:property value="#parameters.r"/>
struts.xml里写:
因为是客户端跳转,不存在ValueStack,所以把t的内容保存到Stack Context的parameters里了,通过#parameters.r就可调出该值。<action name="s2" class="com.struts.app.Demo1"> <result type="redirect"> /DemoJsp2.jsp?r=${t} </result> </action>
下面两种方法传值同上。
3.
可跳转至action,服务端跳转,地址栏不改变。<action name="s3"> <result type="chain"> <param name="actionName">s1</param><!-- //要跳转的action名称, --> <param name="namespace">/hoho</param><!-- //要跳转的action所在的namespace地址 --> </result> </action>
4.
可跳转至action,客户端跳转,地址栏改变。<action name="s4"> <result type="redirectAction"> <param name="actionName">s2</param> <param name="namespace">/hoho</param> </result> </action>
- 可以在packaage里配置公共的Result,不用写action。我的类中是这样写的
<global-results> <result name="main"> /DemoJsp3.jsp </result> </global-results>
package com.struts.app; import com.opensymphony.xwork2.ActionSupport; public class Demo1 extends ActionSupport{ private int t; public int getT() { return t; } public void setT(int t) { this.t = t; } @Override public String execute() throws Exception { // TODO Auto-generated method stub if(t==1){ return SUCCESS; }else{ return "main"; } } }
所以只要我输入的t不等于1,就返回main。就会调用global-result - 如果一个包中想调用别的包里的global-result,就修改package里的extends内容
包rr想用hoho的global-result就把extends修改成hoho.在大型项目中,多人可继承一个公共的result,就用这种方法。<package name="hoho" namespace="/hoho" extends="struts-default"> <global-results> <result name="main"> /DemoJsp3.jsp </result> </global-results> <action name="s1" class="com.struts.app.Demo1"> <result type="dispatcher"> /DemoJsp1.jsp </result> </action> </package> <package name="rr" namespace="/rr" extends="hoho"> <action name="s2" class="com.struts.app.Demo1"> <result> /DemoJsp2.jsp </result> </action> </package>
Struts2中的Result基本用法
最新推荐文章于 2021-12-10 14:46:13 发布