LocalizedImageResource does not serialize locale/style fields
-------------------------------------------------------------

                 Key: WICKET-1062
                 URL: https://issues.apache.org/jira/browse/WICKET-1062
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 1.3.0-beta4
            Reporter: John Ray


I have a page where clicking an AjaxLink causes an Image to be updated. In the 
onClick()  method of the link I change the image via 
setImageResourceReference(). I then call AjaxRequestTarget.addComponent(image) 
to have the image rendered.

Everything works great when the page is first loaded however if I navigate to a 
different page and then back again the image doesn't update the first time I 
click the link. The problem is that the LocalizedImageResource saves the 
current locale/style in transient fields when it is first created. By 
navigating to a different page and then back again it causes the class to get 
serialized and the locale and style are initialized to null. In 
setSrcAttribute() this code then compares the locale against the image 
component's locale.

Locale l = component.getLocale();
String s = component.getStyle();
if (resourceKind == null ||
        (!Objects.equal(locale, component.getLocale()) || !Objects.equal(style, 
component
                        .getStyle())))
{
        // Get new component locale and style
        locale = component.getLocale();
        style = component.getStyle();

        // Invalidate current resource so it will be reloaded/recomputed
        resourceReference = null;
        resource = null;
}

Since the local in LocalizedImageResource was not serialized it never matches 
and my call to setImageResourceReference() is basically ignored. 

If you just remove the transient keyword from the locale and style fields it 
fixes the problem.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to