Hi, On Thu, Mar 31, 2016 at 4:29 PM, Sven Meier <s...@meiers.net> wrote:
> Hi, > > you can access a component's model with #getDefaultModel() or - if it is a > generic component - with #getModel(). > > To properly 'bind' to a model you should delay invocation of #getObject() > as late as possible, so better overwrite #onComponentTag(): > > protected void onComponentTag(final ComponentTag tag) { > > if (getModelObject().doubleValue() < 0.0) { > add(new AttributeAppender("class", " negative")); > Since you are in #onComponentTag() there is no reason to add a Behavior. Just use the tag: tag.append("class", "negative", " "); > } > } > > > Have fun > Sven > > > > > On 31.03.2016 16:06, Ron Smits wrote: > >> I have searched but I dont find a clear way of getting the model when one >> is creating a custom component: >> >> >> public MoneyLabel(String id) { >> super(id); >> add(new AttributeAppender("class", " number")); >> } >> > It sounds like you always need the model. If there is a CompoundPropertyModel in the parents' hierarchy then move your logic to #onComponentTag(), as per Sven's suggestion. If there is no CPM in the parents then just remove this constructor. > >> public MoneyLabel(String id, Model<? extends BigDecimal> bigDecimalModel) >> { >> super(id, bigDecimalModel); >> add(new AttributeAppender("class", " number")); >> if (bigDecimalModel.getObject().doubleValue() < 0.0) { >> add(new AttributeAppender("class", " negative")); >> } >> } >> >> In the second constructor I can use the supplied model to determine to add >> the negative class. However in the first constructor I cannot find a way >> to >> access the model. >> >> What am I missing? >> >> Ron >> >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >