[
https://issues.apache.org/jira/browse/WICKET-6279?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15679125#comment-15679125
]
Martin Grigorov commented on WICKET-6279:
-----------------------------------------
Good catch, [~svenmeier] !
I think the patch attached to WICKET-3934 would be the best solution. I'll
apply it shortly.
> 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
> Assignee: Martin Grigorov
> Labels: attribute, behavior
> Fix For: 6.26, 7.6.0, 8.0.0-M3
>
>
> 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 navigate 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)