《基于struts2 result type为chain 的action之间数据传递》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、chain:基本用途是构造成一条动作链。前一个Action将控制权转交给后一个Action,而前一个Action的状态在后一个Action里仍然保持着。我现在有一个场景,FirstAction通过chain的方式,将控制权交给SecondAction。FirstAction对应的页面代码为first.ftl,SecondAction对应的页面代码为second.ftl。假设我们的FirstAction如下定义:public class SecondAction extends ActionSupport{
2、 private CustomUser user = null; public String execute() throws Exception { // 利用user做事情或显示在页面上 } // getter setter}意思很明确了,通过first.ftl的输入,到DB中或其他,生成了我们的CustomUser对象,这个CustomUser对象将要在SecondAction使用。于是我们想到了要配置FirstAction的name为toSecond的Resultty
3、pe为chain,将生成的CustomUser对象传递到SecondAction中,我们也这样做了,但是经过调试,发现在SecondAction中没有得到FirstAction中的CustomUser对象。SecondAction是这样实现的:public class SecondAction extends ActionSupport{ private CustomUser user = null; public String execute() throws Exception {
4、 // 利用user做事情或显示在页面上 } // getter setter}看一下ChainingInterceptor.java的实现,发现有这样的注释:An interceptor that copies all the properties of every object in the value stack to the currently executing object.在FirstAction中CustomUseruser并没有在valuestack中,所以没有拷贝到Secon