1

我正在开发可以连接到 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 可以处理集合的方法???

4

1 回答 1

0

如果您修改服务器方法usersOnline()以返回Collection<RosterEntry>对象,则 DWR 将在回调函数的参数中填充该对象,在您的情况下为function(users). 因此,在调用返回回调函数后,function(users)您可以通过users对象获取服务器端方法对其进行的更新。该users对象将需要像 a 一样被遍历,array因为您要返回 aCollectionList适用的任何内容。

这是你想要的?更多信息可以在这里阅读。

于 2011-04-22T17:09:53.077 回答