You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by bryan0101 <bt...@gmail.com> on 2008/10/20 12:34:34 UTC
Ajax refresh custom WebComponent fail (an external image by Igor
Vaynberg)
I'm trying to refresh a custom components describe in
http://cwiki.apache.org/WICKET/how-to-load-an-external-image.html
http://cwiki.apache.org/WICKET/how-to-load-an-external-image.html
.
It's an External image wrapped in a link (clickable image)
The StaticImage part works great.
Minor difference: Instead
of wrapping in ExternalLink,
I just wrap it in Link to opened in a popup, and the popup calls back
the page's function with ajaxrequest.
WIth the requestTarget, one would
think it should be able to ajax refresh the component. Ive tried
Component.replaceWith(newComponent) by creating a
new StaticImage Component, no luck. I've tried
changing the
Model, the
model and/or URL got changed, but the image refused to refresh no
matter what.
Next I'm tempted to just try and wrap all this in a Panel and do a
replaceWith and see, but this is heavy and I try not to do that.
If there are other options I'd glad to try out. Thanks
The StaticImage class:
public class StaticImage extends WebComponent
{
private static final long serialVersionUID =
-7600332611457262341L;
public StaticImage(String id, IModel model)
{
super(id, model);
}
public void resetDefaultModelObject (String url)
{
setDefaultModelObject(new Model(url));
}
protected void onComponentTag(ComponentTag tag)
{
checkComponentTag(tag, "img");
super.onComponentTag(tag);
String url =
getDefaultModelObjectAsString();
url = url + ((url.indexOf("?")
>= 0) ? "&" : "?");
url = url + "wicket:antiCache=" +
System.currentTimeMillis();
tag.put("src", url);
}
}
The code to create the StaticImage
...
mainImg = new StaticImage
("mainImg",new
Model("http://img519.imageshack.us/test1.gif"));
mainImg.setOutputMarkupId(true);
mainImgDiv = new
WebMarkupContainer("mainImgDiv");
mainImgDiv.setOutputMarkupId(true);
mainImgUploadLink = new
Link("mainImgUpload")
{
public void
onClick()
{
setResponsePage(new PopupPage(CurrentPanel.this));
}
};
mainImgUploadLink.setOutputMarkupId(true);
mainImgUploadLink.add(mainImg);
mainImgDiv.add(mainImgUploadLink);
panelForm.add(mainImgDiv);
...
The code to refresh
public void onPopupClose (AjaxRequestTarget target)
{
if (mainImgFile != null)
{
String newImg
= "http://img519.imageshack.us/newtest.gif";
mainImg.resetDefaultModelObject(newImg);
target.addComponent(newImgComp);
target.addComponent(mainImgUploadLink);
target.addComponent(mainImgDiv);
}
}
Any help would be greatly appreciated. Thanks.
--
View this message in context: http://www.nabble.com/Ajax-refresh-custom-WebComponent-fail-%28an-external-image-by-Igor-Vaynberg%29-tp20066916p20066916.html
Sent from the Wicket - User mailing list archive at Nabble.com.