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
>
>

Reply via email to