Hi Sven, okay, I created a jira issue + quickstart: https://issues.apache.org/jira/browse/WICKET-5655 . Hope that helps :)
Kind regards, rza 2014-07-29 19:53 GMT+02:00 Sven Meier <s...@meiers.net>: > Hi, > > I agree, that look bogus. > > WICKET-3413 tried to improve on a similar issue though: > > https://issues.apache.org/jira/browse/WICKET-3413 > > Wouldn't it be easier, just to always clear FLAG_INHERITABLE_MODEL in > #setDefaultModel(), i.e. when a model is set explicitely? > > Please create a Jira issue. > > Regards > Sven > > > > On 07/29/2014 05:26 PM, Raoul Zander wrote: > >> Hi, >> >> the flag is not set to true - that's the problem :) >> >> See the method Component.setModelImpl(IModel) >> >> especially (Line 2981 in Wicket-Core 6.16.0): >> >> if (getFlag(FLAG_INHERITABLE_MODEL) && !(model instanceof >> IComponentInheritedModel)) >> { >> setFlag(FLAG_INHERITABLE_MODEL, false); >> } >> >> Which should probably be >> >> if (getFlag(FLAG_INHERITABLE_MODEL) && !(model instanceof IWrapModel)) >> { >> setFlag(FLAG_INHERITABLE_MODEL, false); >> } >> >> Regards, >> rza >> >> 2014-07-29 17:09 GMT+02:00 Sven Meier <s...@meiers.net>: >> >> Hi, >>> >>> if I look for setFlag(FLAG_INHERITABLE_MODEL, true), it is called in >>> initModel() only. >>> >>> Please paste the relevant code or even better create a quickstart. >>> >>> Regards >>> Sven >>> >>> >>> On 07/29/2014 04:59 PM, Raoul Zander wrote: >>> >>> In Component.setModelImpl(IModel) >>>> >>>> - rza >>>> >>>> 2014-07-29 16:37 GMT+02:00 Sven Meier <s...@meiers.net>: >>>> >>>> Hi, >>>> >>>>> >>>>> the setModel(CompoundPropertyModel ...) actually KEEPS the >>>>> FLAG_INHERITABLE_MODEL on true >>>>> >>>>> where is that? >>>>> >>>>> Sven >>>>> >>>>> >>>>> >>>>> On 07/29/2014 04:29 PM, Raoul Zander wrote: >>>>> >>>>> Hi everyone, >>>>> >>>>>> I think there is some kind of bug in the handling of >>>>>> CompoundPropertyModel >>>>>> (or any IComponentInheritedModel). >>>>>> >>>>>> In Component exists a Flag FLAG_INHERITABLE_MODEL - which is set to >>>>>> true >>>>>> whenever a model is inherited from a parent, so that the model can be >>>>>> nulled onDetach. Thing is: The same flag is set when a >>>>>> IComponentInheritedModel is set as default model (via >>>>>> setModelImpl(IModel)). >>>>>> >>>>>> This leads to exceptions with chained CompoundPropertyModels as in the >>>>>> following scenario: >>>>>> >>>>>> (With correct indention and code high lighting: >>>>>> http://pastebin.com/5iu0qhWw >>>>>> ) >>>>>> >>>>>> // POJOs (implements Serializable omitted) >>>>>> public class Game { >>>>>> private Data data; >>>>>> // getters / setters >>>>>> } >>>>>> >>>>>> public class Data { >>>>>> private Value value; >>>>>> // getters / setters >>>>>> } >>>>>> >>>>>> >>>>>> public class Value { >>>>>> private int number; >>>>>> // getters / setters >>>>>> } >>>>>> >>>>>> // Panels >>>>>> public class DataPanel extends GenericPanel<Data> { >>>>>> >>>>>> public DataPanel(String id) { >>>>>> super(id); >>>>>> } >>>>>> >>>>>> protected void onInitialize() { >>>>>> super.onInitialize(); >>>>>> >>>>>> setModel(new CompoundPropertyModel<Data>(getModel())); >>>>>> add(new ValuePanel("value")); >>>>>> } >>>>>> } >>>>>> >>>>>> public class ValuePanel extends GenericPanel<Value> { >>>>>> >>>>>> public ValuePanel(String id) { >>>>>> super(id); >>>>>> } >>>>>> >>>>>> protected void onInitialize() { >>>>>> super.onInitialize(); >>>>>> >>>>>> setModel(new CompoundPropertyModel<Value>(getModel())); >>>>>> add(new Label("number")); >>>>>> } >>>>>> } >>>>>> >>>>>> // and the page >>>>>> public class GamePage extends WebPage { >>>>>> >>>>>> protected void onInitialize() { >>>>>> super.onInitialize(); >>>>>> >>>>>> setDefaultModel(new CompoundPropertyModel<Game>(new >>>>>> Game())); >>>>>> // make Page stateful like it would happen with AJAX links >>>>>> and >>>>>> alike >>>>>> setStatelessHint(false); >>>>>> add(new DataPanel("data")); >>>>>> } >>>>>> } >>>>>> >>>>>> Markup is irrelevant. The first time the page loads correct but as >>>>>> soon >>>>>> as >>>>>> you refresh the page you'll get the error "No get method defined for >>>>>> class: >>>>>> class Game expression: number". >>>>>> Why that? Because the setModel(CompoundPropertyModel ...) actually >>>>>> KEEPS >>>>>> the FLAG_INHERITABLE_MODEL on true so that our custom set model will >>>>>> be >>>>>> nulled on the next detach. >>>>>> >>>>>> In my opinion this is a bug as FLAG_INHERITABLE_MODEL should be true >>>>>> if >>>>>> (and only if) the current component model was inherited - and not if >>>>>> it >>>>>> is >>>>>> *inheritable*. >>>>>> But on the other hand: Maybe i'm using the models the wrong way and >>>>>> there's >>>>>> a better way to achieve the same result (basically using >>>>>> CompoundPorpertyModels on different levels of an object graph) >>>>>> >>>>>> Kind regards, >>>>>> rza >>>>>> >>>>>> >>>>>> ------------------------------------------------------------ >>>>>> --------- >>>>>> >>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>> >>>>> >>>>> >>>>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>> >>> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >