Struts2中的Result基本用法

  • 在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里写:
    <result type="dispatcher">
    				/DemoJsp1.jsp
                </result>
    就可接收到参数,因为服务器跳转,他们共用valueStack里的内容。
  • 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里写:
    <action name="s2" class="com.struts.app.Demo1">
    			<result type="redirect">
    				/DemoJsp2.jsp?r=${t}
                </result>
    		</action>
    因为是客户端跳转,不存在ValueStack,所以把t的内容保存到Stack Context的parameters里了,通过#parameters.r就可调出该值。
    下面两种方法传值同上。
    3.
    <action name="s3">
    			<result type="chain">
                 <param name="actionName">s1</param><!-- //要跳转的action名称, -->
                 <param name="namespace">/hoho</param><!-- //要跳转的action所在的namespace地址 -->
    			</result>
    		</action>
    可跳转至action,服务端跳转,地址栏不改变。
    4.
    <action name="s4">
    			<result type="redirectAction">
                 <param name="actionName">s2</param>
                 <param name="namespace">/hoho</param>
    			</result>
    		</action>
    可跳转至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内容
    <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>
    包rr想用hoho的global-result就把extends修改成hoho.在大型项目中,多人可继承一个公共的result,就用这种方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值