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”; |
|
|
我也碰到这个问题,帮顶
|
|