PropetyColumn implements IStyledColumn so you can override getCssClass()
and return a class if it is null instead of adding the attributemodifier.
And you could create your own model to return a default string when the
underlying model is null...
something like this...
public class DefaultModel<T> extends AbstractWrapModel {
private T default;
private IModel<T> wrappedModel;
public DefaultModel(IModel<T> wrappedModel, T default) {
this.default = default;
this.wrappedModel = wrappedModel;
}
T getObject() {
T object = wrappedModel.getObject();
if (object == null) {
object = default;
}
return object;
}
T getWrappedModel() {
return wrappedModel;
}
}
The above probably doesn't compile... but the idea is you can nest
models to hide all the tricky logic away in one place.
This is the first time I have seen AbstractWrapModel, so I hope the
above is the correct usage.
Ernesto Reinaldo Barreiro wrote:
Maybe something like this?
PropertyColumn<Asset> propertyColumn = new PropertyColumn<Asset>(
new Model<String>("AuditTrain"), "audit_train") {
private static final long serialVersionUID = 1L;
@Override
public void populateItem(Item<ICellPopulator<Asset>> item,
String componentId, IModel<Asset> rowModel) {
if(rowModel.getObject().getAudit_train() != null)
super.populateItem(item, componentId, rowModel);
else {
item.add(new Label(componentId, "No audit train"));
item.add(new AttributeModifier("class",true, new
Model<String>("noaudit")));
}
}
};
Best,
Ernesto
On Sat, Jan 2, 2010 at 4:18 AM, Norman Elton <[email protected]> wrote:
I've created a DataTable, which works great. I'd like to define the
behavior if a property returns NULL. For instance, this column
retrieves the AuditTrain object for a given Asset:
columns.add(new PropertyColumn<Asset>(new Model<String>("Audit
Train"), "audit_train");
If the AuditTrain is NULL, I get a null-pointer exception. Ideally,
I'd like to return a column-specific string and css class. Seems that
I need to define a new IColumn.
Any pointers? Has this been done before?
Thanks,
Norman
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
--
Jason Lea