String page="/Test/frame/top.jsp"; Browser.withPage(page,new Runnable(){ public void run(){ System.out.println("---------------------------------------");//调试时程序未打印此句。 ScriptSessions.addFunctionCall("test");//top.jsp 页面上的js 方法 } } ); web.xml文件中我加了activeReverseAjaxEnabled 设为true 郁闷的是我debug调试时上面输出的那句话没有打印。 |
|
自己顶!
|
|
80分 |
新版本的API此处有Bug 、 使用旧API。
// 获得WEB上下文 WebContext wctx = WebContextFactory.get(); // 向指定页面推送消息 Collection sessions = wctx.getScriptSessionsByPage("/ichat/pages/main/show_msg.jsp"); Util utilAll = new Util(sessions); utilAll.addFunctionCall("callBack", messages); |
还搞不定给我留言,给你个例子。
|
|
别留了,不给了,告诉你的足够解决问题,学习阶段不应该偷懒地,呵呵~~ |
|
非常感谢(木子)的回答。这旧的API我也试过WebContext wctx = WebContextFactory.get();
wctx=null; 我用ServerContextFactory.get(context);这种也不行。 |
|
这种方法是绝对可以的, 你没有配全,上个IM项目就是这种方式做的 |
|
/** * 更新在线用户列表 * * @param request */ public void updateUsersList(HttpServletRequest request) { User user = null; String flag = "0";// 标识用户,0:不存在 1:已存在 String name = request.getSession().getAttribute("uname").toString(); String pwd = request.getSession().getAttribute("pwd").toString(); System.out.println("用户ID=" + name + " 用户密码=" + pwd); user = new User(pwd, name); // 保存用户到列表 // 如果列表中无任何用户则添加,否则循环查找列表中是否已存在该用户, // 如果不存在,则添加。如果存在,则不添加 if (users.size() == 0) { users.add(user); } else { for (int i = 0; i < users.size(); i++) { User us = (User) users.get(i); if (us.getUsername().equals(name)) { flag = "1"; break; } } if (flag.equals("0")) { users.add(user); } } /* * //统计在线人数 long count=OnlineCounter.getOnline(); * * StringBuffer sb=new StringBuffer(); sb.append("<script * language=""JavaScript"" defer=""defer"">"); sb.append("d = new * dTree(\""d\"");"); sb.append("d.add(0,-1,""在线用户列表(当前"+count+"人)"");"); * for(int i=0;i<users.size();i++){ User us =(User)users.get(i); * sb.append("d.add("+(i+1)+",0,"""+us.getUsername()+""","""","""","""");"); } * sb.append("document.write(d);"); * sb.append("d.config.useCookies=false;"); * sb.append("d.config.closeSameLevel=true;"); sb.append("</script");//注意这里并不是好了“>”括号,而是在页面另有处理 * * System.out.println("dd="+sb.toString()); */ // 将用户id和页面脚本session绑定 // this.setScriptSessionFlag(user.getUsername()); // 获得WEB上下文 WebContext wctx = WebContextFactory.get(); // 获得在线列表 页面的所有脚本session Collection sessions = wctx.getScriptSessionsByPage("/ichat/pages/main/online_list.jsp"); Util util = new Util(sessions); // 处理这些页面中的一些元素 // util.addFunctionCall("cBack_list", sb.toString()); util.removeAllOptions("users"); util.addOptions("users", users, "username"); } |
|
我一直都郁闷,在项目外写了个简单的可以。
项目里面 String page=”/Test/frame/index.jsp”;//也就是登录页面也可以 就是放在top.jsp中就不行了。 项目是frameset结构的。。。。 |
|
初次接触dwr,这种错是什么意思?
Exception in thread “main” java.lang.NullPointerException at org.directwebremoting.extend.PageScriptSessionFilter.<init>(PageScriptSessionFilter.java:31) at org.directwebremoting.Browser.withPage(Browser.java:141) at com.lhq.ChatManager.main(ChatManager.java:144) |
|
第二行是144行
String page=”/dwrTest/index.jsp”; |
|
我也碰到这个问题,帮顶
|