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オブジェクトを調べて、サーバー側のメソッドによって行われた更新を取得できます。aまたは適用されるものを返すため、オブジェクトusersは an のようにトラバースする必要があります。arrayCollectionList

これはあなたが探しているものですか?詳細については、こちらをご覧ください

于 2011-04-22T17:09:53.077 に答える