2017-01-18 15 views
0

Мне нужно динамически изменять класс CSS для таблицы данных Wicket. Любые предложения, как это сделать? КодКак добавить класс CSS в заголовок таблицы AbstractColumn

Пример:

public class TextColumn<T> extends PropertyColumn<T, String> 

private static final long serialVersionUID = 1L; 

public TextColumn(IModel<String> displayModel, String propertyExpression) 
{ 
    super(displayModel, propertyExpression); 
} 

public TextColumn(IModel<String> displayModel, String sortProperty, String propertyExpression) 
{ 
    super(displayModel, sortProperty, propertyExpression); 
} 

@Override 
public String getCssClass() 
{ 
    return getPropertyExpression(); 
} 

@Override 
public void populateItem(Item<ICellPopulator<T>> item, String componentId, IModel<T> rowModel) 
{ 
    item.add(new Label(componentId, getDataModel(rowModel)).setEscapeModelStrings(false)); 
} 

@Override 
public IModel<Object> getDataModel(IModel<T> rowModel) 
{ 
    final IModel<Object> model = super.getDataModel(rowModel); 

    final Object object = model.getObject(); 

    return model; 

    if((object != null)) 
    { 
     return Model.of(new Model<String>("label here")); 
    } 
    else 
    { 
     return model; 
    } 
}  

} 

ответ

2

Вам необходимо переопределить org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn#getHeader()

@Override 
public Component getHeader(final String componentId) 
{ 
    Component header = super.getHeader(componentId); 
    header.add(AttributeModifier.replace("class", "myCssClass")); 
    return header; 
} 
+0

я придумал другое решение - но у вас есть лучше и короче! – Adrian