问题描述
怎么从ScriptSession取得当前用户,实现向特定的用户发送脚本? 下面是我的代码,要怎么改造?FacesContext facesContext = FacesContext.getCurrentInstance(); ServletContext servletContext = (ServletContext) facesContext.getExternalContext().getContext(); ServerContext sctx = ServerContextFactory.get(servletContext); Collection<ScriptSession> sessions = sctx.getAllScriptSessions(); Util pages = new Util(sessions); pages.addFunctionCall("initD", subject, "im.xhtml?users=" + java.net.URLEncoder.encode(users));
解决方案
/** * 根据用户id获得指定用户的页面脚本session * @param userid * @param request * @return */@SuppressWarnings("unchecked")public ScriptSession getScriptSession(String userid, HttpServletRequest request) {ScriptSession scriptSessions = null;Collection<ScriptSession> sessions = new HashSet<ScriptSession>();sessions.addAll(ServerContextFactory.get(request.getSession().getServletContext()).getScriptSessionsByPage("/chat/index.jsp"));for (ScriptSession session : sessions) {String xuserid = (String) session.getAttribute("userid");if (xuserid != null && xuserid.equals(userid)) {scriptSessions = session;}}return scriptSessions;}