我有一个使用CellTable的GWT 2.4项目。 它有这样的列(实际上更多):
LastName --- FirstName --- Departments
Smith Tom Research, Management
我从“数据库”在服务器上创建的“用户”对象获取的名称。
数据库看起来像这样:
users:
userID
firstName
lastName
departments:
departmentID
departmentName
user_in_department:
userID
departmentID
那么让我的部门出现在桌面上的最佳方式是什么?
目前,我使用RPC从服务器获取用户列表和部门列表。
我想到第三个RPC来获取用户部门关系,然后将名称与客户端上的用户匹配。什么是匹配btw的好方法?
但即使我将部门与我的用户匹配,我该如何将该信息添加到表中?
对于我可以这样做的名字:
TextColumn<User> firstNameColumn = new TextColumn<User>() {
@Override
public String getValue(User object) {
return object.getFirstName();
}
};
但由于部门没有存储在“用户”对象中,我不知道如何将它们放在正确的列和行中。
我希望我已经解释了我的问题,足以让你理解:)
答案 0 :(得分:0)
假设您的User
对象有一个类似的部门列表:
public ArrayList<Department> getDepartments() {
// ...
}
您可以创建一个列来列出部门,如下所示:
TextColumn<User> departmentsColumn = new TextColumn<User>() {
@Override
public String getValue(User object) {
StringBuilder departments = new StringBuilder();
for(int i=0; i < object.getDepartments().size(); i++) {
if (i>0) {
departments.append(",");
}
departments.append(object.getDepartments().get(i).getDepartmentName());
}
return departments.toString();
}
};
答案 1 :(得分:0)
除了第一个答案之外:由于CellTable被参数化以在其行中显示给定类型的对象列表,该对象应包括用户名以及部门列表。您必须以某种方式通过User对象提供该数据,或者创建一个新数据(例如UserDepartmentDTO)作为基础模型中的元素。