浏览 5271 次
锁定老帖子 主题:ActionContext的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-04-13
public class Context { static ThreadLocal context = new ContextThreadLocal();; Map contextMap; public Context(Map contextMap); { this.contextMap = contextMap; } public static ActionContext getContext(); { Context context = (Context); actionContext.get();; if (context == null); { context = new ActionContext(new HashMap(););; setContext(context);; } return context; } public void setContextMap(Map contextMap); { getContext();.context = contextMap; } public Map getContextMap(); { return contextMap; } public void setInfo(Map info); { put("INFO", info);; } public Map getInfo(); { return (Map); get("INFO");; } public Object get(Object key); { return contextMap.get(key);; } public void put(Object key, Object value); { contextMap.put(key, value);; } //~ Inner Classes ////////////////////////////////////////////////////////// private static class ContextThreadLocal extends ThreadLocal { protected Object initialValue(); { return new Context(new HashMap(););; } } } 当我按下按钮,在action的excute()中执行这行 Context.getContext();.getContextMap();.isEmpty();返回位true。当然我在启动的时候就将info加到Context中了。 如果我在action中执行Context.getContext().getInfo(),跑出异常(情理之中)。可是如果我再回到原先按下按钮的那个页面(不清除浏览器记录),再次按下按钮。这个时候contextMap不为空了。 我不明白这个是什么原因。哪位指教下 谢谢 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-04-14
没有人帮下忙啊。
是不是我的问题描述的不清楚 我现在为了避免这个问题的发生。在action中加了Context属性。这样在调用的时候就有了,是通过component传过去的。对了我的这个action是有状态的。它是被我binding到component上了,比较特殊,应该算是component控制器。 |
|
返回顶楼 | |
发表时间:2005-04-14
好像太复杂的样子, 偶这种webwork的dummy完全没有在实际项目中用过ActionContext和Component.
召唤WW达人...... |
|
返回顶楼 | |
发表时间:2005-04-14
Readonly谦虚了,偶才是webwork的dummy。
我的需求是这个样子,要为每个客户保存好一些信息,以便客户只要与服务端保持着联系。那么就可以得到这些信息。我不想保存在某个对象中,然后将这个对象传来传去的。也不想保持在session中。因为觉得ActionContext可以做到。每个用户都会得到一个ActionContext. 不知我的那种情况是不是因为我对ThreadLocal的不了解导致的(瞎猜了) |
|
返回顶楼 | |
发表时间:2005-04-14
引用 因为觉得ActionContext可以做到。每个用户都会得到一个ActionContext.
ActionContext不是每个用户都会得到一个,而是每次请求都会得到一个新的。 不过还是没看明白你的代码的意思,全贴出来瞅瞅? |
|
返回顶楼 | |
发表时间:2005-04-14
引用 ActionContext不是每个用户都会得到一个,而是每次请求都会得到一个新的。
谢谢 我代码就不贴了,很丑。说一下吧 用户请求 --> Class A --> Class B- -> view 在A中组装好Context, B中要用Context没有问题.我在view上再次触发请求,按你说的,自然得不到原先的context. |
|
返回顶楼 | |
发表时间:2005-04-14
个人感觉这种情况放在session比较合适啊,为什么楼主不用session?有什么特殊理由嘛?你这样再做一次岂不是麻烦了。我感觉这种情况就像购物车一样,放入购物车,但是没有提交,跳转几次页面以后,还要保持原来的状态。
|
|
返回顶楼 | |
发表时间:2005-04-14
引用 个人感觉这种情况放在session比较合适啊,为什么楼主不用session?有什么特殊理由嘛?你这样再做一次岂不是麻烦了。我感觉这种情况就像购物车一样,放入购物车,但是没有提交,跳转几次页面以后,还要保持原来的状态。
是啊,为什么不用session呢:)还是用吧,要一个没有ThreadLocal的Context类,整好后放在session中,要的时候拿过来用 多谢多谢 |
|
返回顶楼 | |