I don't think you need to force a unique URL. Receiving an image from
the cache can be problematic on some browsers wrt events, but this has
always worked for me (on all browsers I've tested)...
final Image img = new Image();
img.addLoadHandler(...);
img.addErrorHandler(...);
panel.add(img); // this panel must be in the DOM, i.e. the image must
be attached to the DOM at this point
DeferredCommand.addCommand(new Command() {
public void execute() {
img.setUrl(url); // set the Image URL in a deferred command
}
});
As I said, this works for me, even in IE. You can make a helper class
that takes a container and image, and performs the deferred logic.
On Jul 16, 1:26 pm, davidRoe <[email protected]> wrote:
> thanks, Brett.
>
> right after posting, I had stumbled upon addErrorHandler() while
> browsing the GWT source and tried exactly this, without any joy.
> however, with you re-iterating that this was the solution, I tried
> again, forced a unique URL to avoid the image being loaded from cache,
> and success.
>
> On Jul 15, 12:04 am, "brett.wooldridge" <[email protected]>
> wrote:
>
>
>
> > Almost exactly the same way. If you are only interested in failure:
>
> > public void foo() {
> > image.addErrorHandler(new ErrorHander() {
> > public void onError(ErrorEvent event) {
> > ...
> > }
> > });
>
> > }
>
> > Or if you are interested in both success and failure, your class can
> > implement both interfaces or you can to synthesize a third interface
> > that combines them:
>
> > public void foo() {
> > interface WinAndLose extends LoadHandler, ErrorHander { }
>
> > WinAndLose wal = new WinAndLose() {
> > public void onLoad(LoadEvent event) {
> > }
>
> > public void onError(ErrorEvent event) {
> > ...
> > }
> > }
>
> > image.setErrorHandler(wal);
> > image.setLoadHandler(wal);
>
> > }
>
> > On Jul 15, 3:21 pm, davidroe <[email protected]> wrote:
>
> > > how can I determine that an image failed to load, due to perhaps a
> > > network error?
>
> > > I used to use image.addLoadListener(new LoadListener() {
> > > public void onLoad(Widget sender) {
> > > ...
> > > }
> > > public void onError(Widget sender) {
> > > ...
> > > }
>
> > > }
>
> > > and anything that arrived through onError() was deemed a problem.
>
> > > how can I achieve the same thing with addLoadHandler(new LoadHandler
> > > ()) and the associated LoadEvent?
>
> > > thanks,
> > > /dave
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---