No, don't do that. It's better to use the last-modified timestamp of the image file. Just extend your RPC method to return the mtime when you request the width and the height.
Sorry, I should've explained why this "trick" works. The browser caches the image with its full URL including the query string. When you set the query string to a random value the browser can't use the cached version because its URL is different, in your case, 99.5% of the time. It's also possible, and very likely, that the browser will show an older version of the image. On 8 Sep., 10:50, Paul van Hoven <[EMAIL PROTECTED]> wrote: > Great, this simple trick really works. Thanks a lot. > > I implemented it in the following way: > > Image userPicture = new Image( GWT.getHostPageBaseURL() + > umi.userPic.thumbPath + "?" + Random.nextInt(200)); > > On Sep 8, 12:04 am, Folke <[EMAIL PROTECTED]> wrote: > > > Append a unique ID as query string of the image URL, i.e. the time the > > file was last modified as integer. > > > /upload/images/12345.jpg?1220824911 > > > On Sep 7, 11:34 pm, Paul van Hoven <[EMAIL PROTECTED]> > > wrote: > > > > I have a simple Widget where the user can set its user picture. It has > > > a fileupload and shows the user image. So when the user wants to > > > change his user picture, he simply clicks on the fileupload chooses > > > picture and this is then send to the server. On the server side the > > > picture is safed as "userId".jpg where userId is a unique integer > > > associated with each user. So everytime the user updates his foto, his > > > file named "userId".jpg is simply overwritten, keeps its name and > > > after the fileupload succeeded on the client side in the "public void > > > onSubmitComplete(FormSubmitCompleteEvent event)" method I make an RPC > > > call to the server to retrieve the new image data, such that the user > > > can see his newly changed picture. But there is a problem. > > > > The image in the widget is constructed by > > > > setupWidget() { > > > .... > > > Image userPicture = new Image( GWT.getHostPageBaseURL() + > > > umi.userPic.thumbPath ); > > > userPicture.setPixelSize( umi.userPic.width, umi.userPic.height ); > > > ... > > > > } > > > > So after having gotten the new image data from the server the method > > > setupWidget() is called andthe new picture gets the same path as the > > > old one was, since the "userId".jpg hasn't changed name but content. > > > The problem: The new image is not reloaded, i.e. the same image as the > > > old one is shown. But the size of the picture changes. So now I have > > > the old picture but poorly scaled. I've already tried not to create a > > > new image but to call "setURL()" on the "old" userpicture. But it > > > doesn't work either. > > > > Why is the image not reloaded properly? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to Google-Web-Toolkit@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/Google-Web-Toolkit?hl=en -~----------~----~----~----~------~----~------~--~---