Struts2 的 Result

Result 的常见类型:

dispatcher

相当于 JSP 中的 标签,在服务器端执行跳转。

redirect

很显然的相当于 response.sendRedirect(String url);。

chain

这个与 dispatcher 相似,不过 chain 只能跳转到另一个 action ,而 dispatcher 只能跳转到其他 JSP、Html 页面。

redirectAction

见名知义,不解释。

 

全局 Result:

定义全局 Result 的好处是,我们可以在任意 action 之要返回相同的字符串,如 haha,都可以定位到全局 Result ,而不需要一一指明。

   1:  <global-results>
   2:      <result name="haha">/Test_add_success.jsp
   
   result>
   3:  
   
   global-results>

注意,全局 Result 必须定义在一个包里,即一个 package 标签下。假设我们刚才定义的全局 action 是在名为 wawa 的包里。

定义的全局 Result 默认仅作用于当前 package ,如果想在其他包中使用这个全局 Result ,就得让其他的包继承定义了全局 Result 的包:

   1:  <package name="default" namespace="/" extends="wawa">

 

动态结果集:

我们还可以在 Action 中指定 Result 标签的值:

   1:  package com.cdp.struts2;
   2:   
   3:  import com.opensymphony.xwork2.ActionSupport;
   4:   
   5:  public class TestAction extends ActionSupport {
   6:   
   7:      private String param = "";
   8:      private String dynamicResult;
   9:   
  10:  //Getters and Setters Omitted Here...
  11:      
  12:      public String execute() {
  13:          if (param.equals("1")) {
  14:              dynamicResult = "/Test_add_success.jsp";
  15:          } else {
  16:              dynamicResult = "/Test_add_error.jsp";
  17:          }
  18:          return SUCCESS;
  19:      }
  20:   
  21:  }

然后 dynamicResult 就会被当做参数进值栈信息,我们在 struts.xml 中访问值栈信息就可以得到正确的访问页面了:

   1:  <action name="dynamic" class="com.cdp.struts2.TestAction">
   2:      <result>${dynamicResult}
   
   result>
   3:  
   
   action>

因为我们可以通过 ${} 在 struts.xml 中去值栈里面的参数,所以我们可以利用这一特性,向 result 指定的页面传入参数,在 struts.xml 中这一配置:

   1:  <action name="param" class="com.cdp.struts2.TestAction">
   2:      <result type="redirect">Test_add_success.jsp?param=${param}
   
   result>
   3:  
   
   action>

然后在 Test_add_success 里面调用熟悉的 request.getParameter()  方法实现参数的取值。还可以通过 取值。

当然,我们也可以利用动态结果集设定 dynamicResult 的值来实现这一过程。

只有在 redirect 的时候需要传递参数,dispatcher 是默认共用一个 request 的,也就是不用手工实现传递参数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值