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") ));
Sven
On 31.03.2016 21:16, Martin Grigorov wrote:
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]