我正在开发可以连接到 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
一样被遍历因为您返回的是 Collection
或List
无论适用什么。
这是您要找的吗?有关此内容的更多信息,请阅读 here .
关于java - 如何使用 DWR 更新用户列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5757882/