CellTable 的 GWT RPC 匹配数据

Posted

技术标签:

【中文标题】CellTable 的 GWT RPC 匹配数据【英文标题】:GWT RPC match data for CellTable 【发布时间】:2012-03-14 01:22:24 【问题描述】:

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

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

我希望我已经很好地解释了我的问题,以便您理解 :)

【问题讨论】:

【参考方案1】:

假设你的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();
    
;

【讨论】:

好的,所以您也建议将部门列表放入 User 对象中来解决这个问题?添加此类信息时,用户对象不会变得越来越“沉重”吗? 是的,我建议这样做。在检索这样的表格数据时,您应该努力包含一次性显示表格所需的信息,而不是进行大量 ajax 调用来检索要显示的对象的一部分。尤其是当用户无需执行操作即可查看该数据时。【参考方案2】:

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

【讨论】:

以上是关于CellTable 的 GWT RPC 匹配数据的主要内容,如果未能解决你的问题,请参考以下文章

GWT CellTable,单击时禁用 ButtonCell

将 GWT CellTable 更改提交到服务器的策略/模式

GWT 等待 setVisibleRangeAndClearData 完成

GWT CellTable 列排序

GWT CellTable 工具提示无法正常工作

GWT 2.5.1 CellTable 和 SimplePager 问题