2017-01-18 4 views
0

Wicket 데이터 테이블의 CSS 클래스를 동적으로 변경해야합니다. 그것을하는 방법 어떤 제안?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