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

내가 물방울의 이미지를 업데이트하고 지금은 셀리스트의 셀에 반영 될 동일합니다

아래 AbstractCell의 확장 버전입니다. 셀의 업데이트 들어 ListDataProvider의 set() 메서드를 사용하고 있습니다.

set() 메서드를 사용하면 Cell의 Text 데이터가 완벽하게 업데이트되지만 이미지가 업데이트되지 않습니다. url도 완벽하게 생성되지만 셀이 렌더링되면 Servlet에 대한 호출을 다시 생성하지 않습니다.

서블릿에 대한 호출을 다시 생성 할 수있는 사람이 누구라도 될 수 있습니까?

답변

0

url의 끝에 매개 변수를 추가하십시오. 임의의 int와 같은 것. 브라우저가 이전과 동일한 이미지라고 가정하고 캐시에있는 이미지를 사용하기 때문에 이미지가 새로 고쳐지지 않습니다.

+0

감사합니다. – vbjain