我正在使用带有tomcat 8.1的primefacs 6.1。在我的页面中需要根据会话ID
更新notificationPanel<p:ouputPanel id="notificationId">
#{page.notificationCount}
</p:ouputpanel>
在会话监听器类中我将尝试
public class SessionAttributeListener implements HttpSessionAttributeListener
{
private final Logger logger = Logger.getLogger(getClass());
@Override
public void attributeAdded(HttpSessionBindingEvent event)
{
for (Object a : SessionLife.previousSessionId())
{
HttpSession previousSession = SessionLife.getSession((String) a);
if (previousSession.getId()!=null && event.getSession().getId()!=null
&& (previousSession.getId() != event.getSession().getId()))
{
String userName = previousSession.getAttribute("userLoginName").toString();
Main user = (Main) getManagedBeanObject(Main.class.getSimpleName());
if (StringUtils.equalsIgnoreCase(userName, "user2"))
{
user.setNotificationCount(2);
RequestContext.getCurrentInstance().execute("notificationId");
}
}
}
@Override
public void attributeRemoved(HttpSessionBindingEvent event)
{
}
@Override
public void attributeReplaced(HttpSessionBindingEvent event)
{
}
public Object getManagedBeanObject(String className)
{
FacesContext facesContext = FacesContext.getCurrentInstance();
ELResolver resolver = facesContext.getApplication().getELResolver();
return resolver.getValue(facesContext.getELContext(), null, className);
}
}
}
我的疑问是在我的应用程序中现在登录user1,user2和user3以及现在的当前登录名user4.I需要当前用户来更新user2 outputPanel(notificationId)吗?