struts2 action中部分语句被直接跳过不执行.. 请问这会是什么原因. 本帖最后由 lq38366 于 2012-11-26 17:40:02 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 难道不可以在修改部门信息时就修改session吗? ServletActionContext.getRequest().getSession().setAttribute("updateDep",employee);你这个只能修改当前用户的session,有什么用?你是想修改别的用户吧,你要取得那个用户所对应的session。因此,你需要一个Map<User,Session> 用于获取相应用户的session 恩, 你说的没错。 我们现在的思路也是这样.ServletActionContext.getRequest().getSession().setAttribute("updateDep",employee);当这句话执行完之后,就应该进入监听器中的 attributeAdded 方法。我们有个sessionMaps 存放的就是所有用户的session信息。然后根据已经更新过部门信息的员工名称将 sessionMaps存放的session信息给invalidate, 因为更新了部门信息所以强制用户重新登录。现在的问题就是当更新完部门信息之后,操作session 这代码只执行一遍, 修改完一个后,后面继续修改部门 。ServletActionContext.getRequest().getSession().setAttribute("updateDep",employee);上面这句话就不执行了, 也就无法让HttpSessionListener 监听了, 我估计是执行的吧,只是监听没起作用。第二次修改后,执行语句,updateDep属性值仍是employee,什么都没有改变的话,会引起监听反应吗? session.setAttribute(name,value);如果两次设置的name相同,只在第一次set时触发session的attributeAdded事件,所以你的代码好像只执行了一次一样。解决方案是设定时间标志:Date dateFlag=new Date();session.setAttribute("dateFlag",dateFlag);session.setAttribute(name+dateflag,value);//这样能保证你每次设置属性都能触发事件在attributeAdded方法中用以下语句获取value:Date dateFlag=session.getAttribute("dateFlag");SomeObject obj=session.getAttribute(name+dateFlag);OKAY. good ide , 已经按这思路解决. CSDN 牛人还是很多呀。 关于论坛发帖问题 在web.xml 急死人了,文本框内容匹配? 如何让所有的Action只共享一个actionFrom 关于浏览器提交中文数据给服务器该怎么理解 任务栏IE图标变为QQ图标 自定义标签 初学servlet,遭到挫折,请大虾们不啬赐教! 为什么我在Weblogic 下配了javamail session 后lookup session时会出错? 一个初级问题 Hibernate操作数据库 报错java.lang.Integer cannot be cast to java.lang.String怎么改 servlet上传文件问题(ISO无法上传)
你是想修改别的用户吧,你要取得那个用户所对应的session。因此,你需要一个Map<User,Session> 用于获取相应用户的session
恩, 你说的没错。 我们现在的思路也是这样.ServletActionContext.getRequest().getSession().setAttribute("updateDep",employee);当这句话执行完之后,就应该进入监听器中的 attributeAdded 方法。我们有个sessionMaps 存放的就是所有用户的session信息。然后根据已经更新过部门信息的员工名称将 sessionMaps存放的session信息给invalidate, 因为更新了部门信息所以强制用户重新登录。现在的问题就是当更新完部门信息之后,操作session 这代码只执行一遍, 修改完一个后,后面继续修改部门 。ServletActionContext.getRequest().getSession().setAttribute("updateDep",employee);上面这句话就不执行了, 也就无法让HttpSessionListener 监听了,
我估计是执行的吧,只是监听没起作用。第二次修改后,执行语句,updateDep属性值仍是employee,什么都没有改变的话,会引起监听反应吗?
如果两次设置的name相同,只在第一次set时触发session的attributeAdded事件,
所以你的代码好像只执行了一次一样。
解决方案是设定时间标志:
Date dateFlag=new Date();
session.setAttribute("dateFlag",dateFlag);
session.setAttribute(name+dateflag,value);//这样能保证你每次设置属性都能触发事件在attributeAdded方法中用以下语句获取value:
Date dateFlag=session.getAttribute("dateFlag");
SomeObject obj=session.getAttribute(name+dateFlag);OKAY.