On Fri, Apr 1, 2016 at 12:45 AM, Sven Meier <s...@meiers.net> wrote: > Hi, > > yeah, of course this is right: > > protected void onComponentTag(final ComponentTag tag) { > > if (getModelObject().doubleValue() < 0.0) { > tag.put("class", " negative"); > } > } > > Otherwise you'll end up with one additional behavior for each render - > stupid copy-paste error :/. > > BTW this might be an additional candidate for the new Wicket 8 lambdas: > > label.add(onTag(tag -> if (getModelObject().doubleValue() < 0.0) > tag.put("class", "negative") )); >
+1 > > Sven > > > > On 31.03.2016 21:16, Martin Grigorov wrote: > >> 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 >>> >>> >>> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >