Sven Ackermann created WICKET-6279:
--------------------------------------

             Summary: AttributeModifier.VALUELESS_ATTRIBUTE_REMOVE does not 
work after deserialisation
                 Key: WICKET-6279
                 URL: https://issues.apache.org/jira/browse/WICKET-6279
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 7.2.0
         Environment: Tomcat 7.0
Windows 7
            Reporter: Sven Ackermann


The magic values {{AttributeModifier.VALUELESS_ATTRIBUTE_REMOVE}} and 
{{AttributeModifier.VALUELESS_ATTRIBUTE_ADD}} do not work correctly after they 
have been deserialized.

Imagine you have a page with a component that has sth. added like this:
{code:java}
component.add(AttributeModifier.replace("myattribute", 
AttributeModifier.VALUELESS_ATTRIBUTE_ADD));

component.add(AttributeModifier.replace("anotherattribute", 
Model.of(AttributeModifier.VALUELESS_ATTRIBUTE_ADD)));

component.add(AttributeModifier.replace("thirdattribute", new 
StringResourceModel("myresourcekey").setDefaultValue(AttributeModifier.VALUELESS_ATTRIBUTE_ADD)));
{code}

Once we navaigate away from the page, it gets serialized including the String 
value "VA_ADD" for {{AttributeModifier.VALUELESS_ATTRIBUTE_ADD}}. When we go 
back (e.g. with browser back button), it is deserialized. But then the 
deserialized String "VA_ADD" is not anymore the same as 
{{AttributeModifier.VALUELESS_ATTRIBUTE_ADD}}, so we have an attribute added to 
our component with value "VA_ADD".

I'm not sure how this can be resolved or if it can be resolved at all. My 
workaround is to use an {{AbstractReadOnlyModel}} that always returns 
{{AttributeModifier.VALUELESS_ATTRIBUTE_ADD}}, so that special value is not 
serialized at all.

If it's not possible to manage the deserialisation, then there should be at 
least some documentation about this problem and maybe convenience code using my 
workaround with {{AbstractReadOnlyModel}} could be provided.

Thanks,
Sven



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to