如何通过GWT在CellList中显示不同记录的不同图像

时间:2012-08-06 15:42:58

标签: image gwt celllist

我有一个带有AbstractCell的CellList。每个记录都有一些文本字段和一张图片,就像朋友列表一样,每个人都有他/她自己的图片。在GWT展示中,CellList示例使用AbstractImagePrototype.create(imageResource)向所有人提供一张图片。这不是一个现实世界的案例。如何在GWT中显示这些图片?

我用ClientBundle尝试了一晚,只得到1个主面板中的1个静态图片的结果。此外,我不知道这些图片应放在哪里,在MySql的Blob列中或仅在文件系统中。你能给我一些关于GWT方面或服务器方面的建议吗?非常感谢。

刚才,我看到有人建议服务器端的servlet提供这些图片。但它会导致另一个服务器访问,并应对其进行另一次权限检查。这些图片可以与CellList的文本数据一起下载并一起显示在浏览器中吗?感谢。

在2.5rc中,AbstractCell可以与ui.xml一起使用UiRender。如果它适用于ui.xml,那将是最好的解决方案。

1 个答案:

答案 0 :(得分:1)

这取决于你如何将每个用户的图片传输到你的GWT应用程序 ClientBundle不合适,因为它在编译期间定义资源,我猜你的用户的头像图像非常动态(即新用户,用户更换图片等)。

所以你有两个解决方案:

  1. 将实际图片内容(base64编码)添加到DTO中支持CellList的字段以及render的{​​{1}}方法中的字段,只需创建一个图片在飞行中。
  2. 将图片网址添加到您AbstractCell的{​​{1}}和DTO方法中的字段中,您只需创建renderAbstractCell相应的网址。
  3. 解决方案2将为每个图像创建单独的HTTP请求。解决方案1不会,但是您传输到客户端的数据量会增加。

    关于存储:

    将它们存储为数据库中的blob字段更容易,因为当您删除用户记录时,图像也将被自动删除。但是,您的数据库大小将增加,这始终是备份的问题。