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 更改提交到服务器的策略/模式