在进行统计页面在线用户的统计的时候,开始使用的valueBond、valueUnBond;
每次在刷新页面的时候,会重新调用valueBond。valueUnBond方法,开始使用
valueBond:
if(event.getValue() instanceof User){
for (int i=0; i<list.size(); i++) {
if(list.get(i).getUname().equals(user.getUname())){
return ;
}
}
config.session_vip_countAdd();
list.add(user);
}
valueUnBond:
if(list.contains(user)){
list.remove(user);
config.session_vip_countPlus();
}
但是这仅仅适用于没有刷新的页面,每次刷新之后User在存入session的时候会更新,导致list.contains(user)找不到对应的user,所以每次在执行的时候会出现问题。
所以换成这段代码就好了:
valueUnBond:
if(event.getValue() != null ){
for (int i=0; i<list.size(); i++) {
if(list.get(i).getUname().equals(((User) user).getUname())){
config.session_vip_countPlus();
list.remove(list.get(i));
System.out.println("移除User");
}
}
}
此时,每次无论是在刷新页面还是直接session.invalidate();的时候,调用valueBond判断存在,所以不会重新添加;valueUnBond中判断的不是list中是否存在一致的编码,而是判断是否存在一致的用户名,所以不会出错了!
每次在刷新页面的时候,会重新调用valueBond。valueUnBond方法,开始使用
valueBond:
if(event.getValue() instanceof User){
for (int i=0; i<list.size(); i++) {
if(list.get(i).getUname().equals(user.getUname())){
return ;
}
}
config.session_vip_countAdd();
list.add(user);
}
valueUnBond:
if(list.contains(user)){
list.remove(user);
config.session_vip_countPlus();
}
但是这仅仅适用于没有刷新的页面,每次刷新之后User在存入session的时候会更新,导致list.contains(user)找不到对应的user,所以每次在执行的时候会出现问题。
所以换成这段代码就好了:
valueUnBond:
if(event.getValue() != null ){
for (int i=0; i<list.size(); i++) {
if(list.get(i).getUname().equals(((User) user).getUname())){
config.session_vip_countPlus();
list.remove(list.get(i));
System.out.println("移除User");
}
}
}
此时,每次无论是在刷新页面还是直接session.invalidate();的时候,调用valueBond判断存在,所以不会重新添加;valueUnBond中判断的不是list中是否存在一致的编码,而是判断是否存在一致的用户名,所以不会出错了!