![](https://csdnimg.cn/release/download_crawler_static/88355924/bg6.jpg)
}
return context;
}
我们暂且不管其它的,第一句话中的 actionContext 实际上是一个 ThreadLocal,因此一
个 Action 可以在多线程中使用。
有了这个 ActionContext 还不够,我们希望 Action 取到这个 ActionContext 的值已经被设
置好,并且希望我们的 execute 需要的参数也被正确的设置,不必每次都去从一个 FormBean
读取,或者从 ActionContext 里面去取。也就是在大多数情况下,Action 应当不需要存取
ActionContext。
ActionProxyFactory 的 Factory 部分和参数
为了在 Action 中得到这个 ActionContext,必须能够在 Action 实例建立好以后为它初始
化 自 己 的 ActionContext , 这 是 Factory 的拿 手 好戏 , Xwork 提 供 的 就 是 一 个
ActionProxyFactory。
.
public void testCreateUserWithProxyFactory() throws Exception {
Map params = new HashMap();
params.put("username", "test");
params.put("email", "test@test.com");
params.put("password", "1234");
params.put("confirm", "1234");
Map context = new HashMap();
context.put(ActionContext.PARAMETERS, params);
ActionProxyFactory factory = ActionProxyFactory.getFactory();
ActionProxy proxy = factory.createActionProxy("", "signup", context);
proxy.execute();
SignupAction action = (SignupAction) proxy.getAction();
String result = action.execute();
assertEquals(result, Action.SUCCESS);
}
第一段代码,我们建立了一个 Map,把 Action JavaBean 属性作为 key,以及需要设置
的值作为 value 全部设置好,然后把这个 Map 用关键字放入 ActionContext.PARAMETERS
一个 Context.第二段代码用 factory.createActionProxy 来建立一个 ActionProxy,该方法的第