GWT RPC匹配CellTable的数据

时间:2012-03-14 01:22:24

标签: java database gwt rpc celltable

我有一个使用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();
        }
    };

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

我希望我已经解释了我的问题,足以让你理解:)

2 个答案:

答案 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)作为基础模型中的元素。