Hi,
On Thu, Mar 31, 2016 at 4:29 PM, Sven Meier <[email protected]> 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: [email protected]
> For additional commands, e-mail: [email protected]
>
>