zoukankan      html  css  js  c++  java
  • 【struts2】名为redirect的ResultType

      1)基本使用

      名称为“redirect”的ResultType,在struts-default.xml里的配置如下:

    <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>

      通过配置可以看出,它对应的实现类是ServletRedirectResult。

      这种Result同常也使用JSP作为视图技术。它包装的是javax.servlet.http.HttpServletResponse类的sendRedirect方法,这个ResultType也是用来实现跳转到下一个页面的。但是它的功能与上面的dispatcher不同,“redirect”的特点是全新的请求,这就意味着,本次请求和跳转到下一个页面的请求是不同的对象,因此它们的值是不一样的。

      2)特殊用法

      对比着dispatcher的ResultType,我们看看它的特点。同样在<result>元素的定义中可以使用Action的execute方法运行之后的数据。同样在Action中定义一个folder字符串,并在execute或者validate方法中对它赋值。那么,在<result>的定义中就可以引用folder这个变量,示例如下:

    <result name="toWelcome" type="redirect">/${folder}/welcome.jsp</result>  

      由于redirect采取重定向的方式,下一个页面会取不到上一个请求对象里面的值,如果要传值的话,可以采用get的方式传参。示例如下:

    <result name="toWelcome" type="redirect">/${folder}/welcome.jsp?account=${account}</result>  

      上面这个配置,会向新请求里面传入account的参数,这样在欢迎页面就可以获取到account的值了。但是,前面写的欢迎页面是取不到这个account的值的,为什么呢?先来看看前面写的欢迎页面取值的那句话,如下:

    欢迎账号为<s:property value="account"/>的朋友来访  

      以前的欢迎页面,是通过使用Struts2的标签来获取的account的值,Struts2的标签会到Struts2的值栈里面去取值,而这里是执行Result的时候,才再请求上添加了account这么一个参数,然后就直接回到页面了,根本不会再走一次Struts2的运行过程,也就是说,这里传递的这个参数,根本不会进入到这个请求对应的值栈,因此这里这个写法是取不到值的。

      那么该怎么写才能获取到这个account参数的值呢?有两个简单的方法,一个是直接使用Servlet的HttpServletRequest对象的方法来获取参数,另外一个方法是直接使用EL表达式,示例如下:

    欢迎账号为${param.account}的朋友来访  
    <br/>
    欢迎账号为<%=request.getParameter("account") %>的朋友来访  

      3)更完整的配置方式

       与“dispatcher”一样,“redirect”也可以配置<param>,同样可以配置location和parse,如下:

    <result name="toWelcome" type="redirect">  
        <param name="location">/s2impl/welcome.jsp</param>  
        <param name="parse">true</param>  
    </result>

      参考资料:http://www.iteye.com/topic/1124526

  • 相关阅读:
    Elementary Methods in Number Theory Exercise 1.3.13
    Elementary Methods in Number Theory Exercise 1.3.17, 1.3.18, 1.3.19, 1.3.20, 1.3.21
    数论概论(Joseph H.Silverman) 习题 5.3,Elementary methods in number theory exercise 1.3.23
    Elementary Methods in Number Theory Exercise 1.2.31
    数论概论(Joseph H.Silverman) 习题 5.3,Elementary methods in number theory exercise 1.3.23
    Elementary Methods in Number Theory Exercise 1.3.13
    Elementary Methods in Number Theory Exercise 1.3.17, 1.3.18, 1.3.19, 1.3.20, 1.3.21
    Elementary Methods in Number Theory Exercise 1.2.31
    Elementary Methods in Number Theory Exercise 1.2.26 The Heisenberg group
    4__面向对象的PHP之作用域
  • 原文地址:https://www.cnblogs.com/ningvsban/p/3735041.html
Copyright © 2011-2022 走看看