【struts2】名为chain的ResultType

  1)基本使用

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

<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>

  chain是一种特殊的视图结果,用来将Action执行完之后链接到另一个Action中继续执行,新的Action使用上一个Action的上下文(ActionContext),数据也会被传递。

  这在实际开发中,也是经常用到的一种ResultType。比如我们在Servlet开发中,一个请求,被一个Servlet处理过后,不是直接产生相应,而是把这个请求传递到下一个Servlet继续处理,直到需要的多个Servlet处理完成后,才生成响应返回。同样的,在Struts2开发中,也会产生这样的需要,一个请求被一个Action处理过后,不是立即产生响应,而是传递到下一个Action中继续处理。那么这个时候,就需要使用chain这个ResultType了。

  来示例一下,先看看第一个Action,就用HelloWorldAction吧,稍微简化一下,示例如下:


public class HelloWorldAction extends ActionSupport {
private String account;
private String password;
private String submitFlag;

public String execute() throws Exception {
this.businessExecute();
return "toSecond";
}
public void businessExecute(){
System.out.println("用户输入的参数为==="+"account="+account+",password="+password+",submitFlag="+submitFlag);
}
//属性对应的getter/setter方法,省略了
}

  第二个Action,示例代码如下:


public class SecondAction extends ActionSupport {
public String execute() throws Exception {
System.out.println("现在SecondAction进行处理");
return "toWelcome";
}
}

  然后到struts.xml中,配置这两个Action,要注意第一个Action的配置,在配置“toSecond”这个result的时候,用的就是chain这个ResultType,示例如下:


<package name="helloworld"  extends="struts-default">
<action name="helloworldAction" class="cn.javass.action.action.HelloWorldAction">
<result name="toSecond" type="chain">
<param name="actionName">secondAction</param>
</result>
<!--下面这样配置也可以
<result name="toSecond" type="chain">secondAction</result>
-->
</action>
<action name="secondAction" class="cn.javass.action.action.SecondAction">
<result name="toWelcome">/s2impl/welcome.jsp</result>
</action>
</package>

  2)备注

  • chain不能在result配置的时候传递参数,也就是说,不能类似于如下的配置:

<result name="toSecond" type="chain">
<param name="actionName">secondAction?account=5</param>
</result>

  这种配置方式是不行的,因为这里要求配置的是要链接的Action的name,不能传递参数,那么,要传递参数怎么办呢?那就需要在Action里面使用ActionContext或者ServletActionContext了。

  • 使用chian的方式,后面的Action会和前面的Action共用同一个ActionContext

  • 名称为“chain”的ResultType在配置的时候,除了前面示例中的actionName外,还有一个参数,名称为“namespace”,表示被链接的Action所在包的命名空间,如果不设置,默认的即是当前的命名空间。配置示例如下:

<result name="toSecond" type="chain">
<param name="actionName">secondAction</param>
<param name="namespace">其他Package的namespace</param>
</result>

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

【struts2】名为chain的ResultType,布布扣,bubuko.com

时间: 2024-12-12 22:02:33

【struts2】名为chain的ResultType的相关文章

【struts2】名为redirect的ResultType

1)基本使用 名称为"redirect"的ResultType,在struts-default.xml里的配置如下: <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/> 通过配置可以看出,它对应的实现类是ServletRedirectResult. 这种Result同常也使用JSP作为视图技术.它包装的是j

【struts2】名为dispatcher的ResultType

1)基本使用 名称为"dispatcher"的ResultType,在struts-default.xml里的配置如下: <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/> 通过配置可以看出,它对应的实现类是ServletDispatcherResu

Struts2系列:(6)result-type和全局result

在(2)中到struts.xml中的package.action和result进行了简单介绍. 在(3)中到action进行了一些详细介绍. 在本节中,将对result进行一些详细介绍,主要包括两部分:result-type和全局的result. 1.result-type #代码角度#在Action类中,每个 action 方法均返回一个 String 类型的值, Struts 将根据这个值来决定响应什么结果. #配置角度#在struts.xml配置文件中,每个 Action 标签可包含多个

【struts2】Result和ResultType

简单的说,Result是Action执行完后返回的一个字符串,它指示了Action执行完成后,下一个页面在哪里.Result仅仅是个字符串,仅仅是用来指示下一个页面的,那么如何才能够到达下一个页面呢?下一个页面如何能正确地展示结果呢?这就该引出一个新概念--ResultType,所谓ResultType,指的是具体执行Result的类,由它来决定采用哪一种视图技术,将执行结果展现给用户. 很多时候,我们并不去区分Result和ResultType,而是笼统的称为Result.因此,Result除

【Struts2二】结果集(result-type)

在jsp/servlet中,结果集通常是指请求转发和重定向这两种! Struts2作为框架,提供了基于这两种的更多的结果集! 在struts-default.xml中定义了一些默认的结果集:          <result-types> <result-type name= "chain" class="com.opensymphony.xwork2.ActionChainResult" /> <result-type name= &

struts2的结果类型

1.从struts-default.xml入手,得到结果类型列表以及对应的处理类: <result-types> <!-- 转发到action --> <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> <!-- 转发到jsp --> <result-type name="dispatcher&quo

Struts2系列:(12)拦截器

学习拦截器 1.拦截器能够做什么?(Why 和 What) 2.如何定义拦截器?(How to use) 3.如何注册拦截器?(How to use) 4.如何使用拦截器?(How to use) 1.拦截器能够做什么? Struts2 拦截器在访问某个 Action 方法之前或之后实时拦截的可插拔的组件. 拦截器栈(Interceptor Stack): 将拦截器按一定的顺序联结成一条链. 实现原理:当请求action时,Struts 查找配置文件,根据其配置实例化拦截器对象,并形成一个列表,

Struts2框架基本使用

时间:2017-1-6 16:53 修改struts.xml配置文件不需要重启服务器. Struts2框架 一.        *   介绍Struts2        *   关于Struts2配置(关于Action配置)        *   关于Struts2结果类型    二.        *   Struts2处理请求参数        *   Struts2的类型转换(了解)        *   Struts2的校验    三.        *   Struts2的国际化   

Struts2基本配置详解

Struts2配置文件加载顺序 struts2 配置文件由核心控制器加载 StrutsPrepareAndExecuteFilter (预处理,执行过滤) init_DefaultProperties(); // [1] ---------- org/apache/struts2/default.properties init_TraditionalXmlConfigurations(); // [2] --- struts-default.xml,struts-plugin.xml,strut