webwork同一个ACTION不同操作时,域值的困惑。

本文探讨了在WebWork框架中,如何在一个ACTION内的init()和execute()两个方法间正确传递值的问题。当用户从加载页面到提交数据过程中,init()方法设置的值在execute()方法中丢失,本文分析了原因并提出了可能的解决方案。
webwork中,在1个ACTION内,定义了2个方法,init()用于加载JSP页面时调用(如:test!init.action,初始化JSP的一些显示初始值(例如firstString)。
用户对于JSP进行选择或输入后,点击提交,执行ACTION的另一个方法execute(),(如:test!execute.action),但是,这时在execute这个方法执行时,init()设置的域值都丢失了(firstString),重新为NULL。这个问题如何解决呢?
[code]public class Test extends ActionSupport {

private String firstString;
private String secondString;

public String init() throws Exception{
firstString = "init in init()";
return SUCCESS;
}

public String execute() throws Exception{
secondString = firstString;
return SUCCESS;
}

public String getFirstString() {
return firstString;
}

public void setFirstString(String firstString) {
this.firstString = firstString;
}

public String getSecondString() {
return secondString;
}

public void setSecondString(String secondString) {
this.secondString = secondString;
}

}
[/code]
我的理解是,因为webwork是基于线程独立的,是不同的actionContext,因此,init()和execute()执行时,其实处于不同的线程实例,因此,init()里初始化的值,在execute()中,已不可见。不知道对不对?
那样的话,是不是我只能把init()的值(firstString)放到Session或者request中。除此之外,还有其他方法不?
谢谢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值