java - 更新 gwt CellList 中的图像

标签 java google-app-engine gwt gwt-2.2-celltable

我正在使用 Blob 将图像存储在 Google App Engine 中。当我使用 ListDataProvider 的 add() 方法在 CellList 中添加新数据时,它的渲染效果非常完美。

下面是 AbstractCell 的扩展版本:

@Override
public void render(com.google.gwt.cell.client.Cell.Context context,
        AppsBean value, SafeHtmlBuilder sb) {
    String url=GWT.getModuleBaseURL()+"fetchIcon?appId="+value.getId()+"&requestType=icon";
    sb.appendHtmlConstant("<Table>");
    sb.appendHtmlConstant("<tr><td rowspan='3'>");
    sb.appendHtmlConstant("<img src='"+url+"' style='width : 75px ;height: 75px;' />");
    sb.appendHtmlConstant("</td><td>");
    sb.appendEscaped(value.getAppName());
    sb.appendHtmlConstant("</td></tr><tr><td>");
    sb.appendEscaped(value.getAppLink());
    sb.appendHtmlConstant("</td></tr><tr><td>");
    sb.appendEscaped(value.getAppDesc());
    sb.appendHtmlConstant("</td></tr>");
    sb.appendHtmlConstant("</Table>");
}

Servlet 代码:

        String appId = get(request, "appId");
    String requestType = get(request, "requestType");
    log.info("Your request for apps icon: " + appId + ", requestType: " + requestType);
    if (requestType.equalsIgnoreCase("icon")) {
        Apps icon = appsServiceImpl.getApp(Long.valueOf(appId));
        log.info("We got apps for you: " + icon);
        if(icon != null){
            log.info("We got store logo for you: " + icon.getIcon());
            response.getOutputStream().write(icon.getIcon());
        }
    }

现在,当我更新 Blob 中的图像时,我希望相同的内容能够反射(reflect)在 CellList 的单元格中。为了更新单元格,我使用 ListDataProvider 的 set() 方法。

使用set()方法,单元格中的文本数据得到完美更新,但图像没有得到更新。 url 也完美生成,但在单元格渲染后不会再次生成对 Servlet 的调用。

谁能告诉我我应该做什么才能再次生成对 Servlet 的调用?

最佳答案

在 url 末尾添加参数。像随机整数之类的东西。 该图像不会刷新,因为浏览器假定它与之前的图像相同并使用其缓存中的图像。

Random random = new Random();
String url=GWT.getModuleBaseURL()+"fetchIcon?appId="+value.getId()+"&requestType=icon" + "&r=" + random.nextInt();

关于java - 更新 gwt CellList 中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7358671/

相关文章:

java - 无法在 GWT 中使用 GWTquery

html - 在 gwt 应用程序中嵌入模板

java - REST,Tomcat,Jersey,IntelliJ,产生 404

java - 如何在Java中将TIFF转换为JPEG/PNG

java - 如何从 Java 中的 pfx 获取 PEM Base 64?

php - 在 Google Cloud Storage 存储桶上设置缓存控制

node.js - 服务器重启后 PM2 不会启动我的 nodejs 应用程序

java - 如何检查用户是否登录 Google 并在未登录时显示链接/按钮?

gwt - 如何在 FileUpload 小部件上触发 clickEvent?

java - 开始 Android 和 Java