2011-09-09 15 views
1

Blobを使用してGoogle App Engineに画像を保存しています。 ListDataProviderのadd()メソッドを使用してCellListに新しいデータを追加すると、レンダリングが完璧になります。gwt CellListの画像を更新する

@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>"); 
} 

サーブレットコード:

 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()); 
     } 
    } 

私はブロブ内の画像を更新しています今私はCellListのセルに反映される同じたく

以下AbstractCellの拡張版です。セルの更新については、ListDataProviderのset()メソッドを使用しています。

set()メソッドを使用すると、CellのTextデータは完璧に更新されますが、イメージは更新されません。 urlも完全に生成されますが、セルがレンダリングされるとサーブレットの呼び出しを再度生成しません。

私はサーブレットの呼び出しを再度生成するように誰にもできますか?

答えて

0

URLの最後にパラメータを追加します。ランダムなintのようなもの。 ブラウザは以前と同じイメージであると判断し、キャッシュにあるイメージを使用するため、イメージは更新されません。

+0

ありがとう、私は同じことをしました。 – vbjain

関連する問題