java - 如何使用 DWR 更新用户列表

标签 java servlets dwr

我正在开发可以连接到 Gtalk 和 Facebook 的聊天客户端。我正在使用 DWR 来实现此目的。

登录后,我必须填充用户列表。在客户端我有

function showUsersOnline() {
    var cellFuncs = [ function(user) {

        return '<i>'+user+'</i>';
    } ];
    LoginG.usersOnline( {
        callback : function(users) {
            dwr.util.removeAllRows('usersOnline');
            dwr.util.addRows("usersOnline", users, cellFuncs, {
                escapeHtml : false
            });

在服务器端,我使用 Smack Api 来获取名册列表(在线)

public void usersOnline() {
    Roster roster = connection.getRoster();
    Collection<RosterEntry> entries = roster.getEntries();
    System.out.println(roster.getEntryCount());
    int count1 = 0;
    int count2 = 0;
    for (RosterEntry r : entries) {
        String user = r.getUser();
        Presence presence = roster.getPresence(user);
        if (presence.getType() == Presence.Type.available) {
            System.out.println(user + " is online");
            count1++;

        } else {
            System.out.println(user + " is offline");
            count2++;
        }

现在我应该将数据作为 JSON 返回还是有一种方法 DWR 可以处理该集合???

最佳答案

如果修改服务器方法usersOnline()返回 Collection<RosterEntry>对象,然后 DWR 会将其填充到回调函数的参数中,在您的情况下为 function(users) 。所以调用完之后就返回回回调函数function(users)您可以通过users对象以获取服务器端方法对其进行的更新。 users对象需要像 array 一样被遍历因为您返回的是 CollectionList无论适用什么。

这是您要找的吗?有关此内容的更多信息,请阅读 here .

关于java - 如何使用 DWR 更新用户列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5757882/

相关文章:

java - 我如何 "cancel"一个 CountDownLatch?

java - 简单的 Hello World servlet 在 Eclipse Tomcat 中给出错误 404

tomcat - 从 servlet 应用程序访问 server.xml 中的主机信息

javascript - Javascript 代码是如何在 Direct Web Remoting (DWR) 中生成的?

Java android 文件输入流文件输出流问题

java - 时间戳最后带有.0

java - dwr 中的透明批处理远程调用

java - DWR 传递字符串

java - com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException 即使类中存在字段

java - 在 Servlet 中获取真实的客户端 IP