1

我有一个使用 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 来获取用户与部门的关系,然后将名称与客户端上的用户匹配。什么是匹配那个顺便说一句的好方法?

但即使我的部门与我的用户匹配,我如何将这些信息添加到表格中?

对于名称,我可以这样做:

    TextColumn<User> firstNameColumn = new TextColumn<User>() {

        @Override
        public String getValue(User object) {
            return object.getFirstName();
        }
    };

但是由于部门没有存储在“用户”对象中,我不知道如何将它们放在正确的列和行中。

我希望我已经很好地解释了我的问题让你理解:)

4

2 回答 2

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();
    }
};
于 2012-03-14T02:56:04.143 回答
0

除了第一个答案:由于 CellTable 已参数化以在其行中显示给定类型的对象列表,因此该对象应包括用户名和部门列表。您必须以某种方式通过 User 对象使该数据可用,或者创建一个新的(例如 UserDepartmentDTO)作为基础模型中的元素。

于 2012-03-14T06:48:00.477 回答