Изменение представления атрибутов в Wicket Datatable - PullRequest
4 голосов
/ 28 сентября 2011

Я разрабатываю новое приложение в Wicket и столкнулся с небольшой проблемой.

Я использую таблицу Wicket DataTable, но я хочу, чтобы некоторые атрибуты в таблице были представлены иначе, чем их "фактические"ценности.Например, у меня есть Дата, которая представлена ​​как «2011-09-01 00:00», но я хочу, чтобы она была представлена ​​как «2011-09-01».Как мне это сделать?

Я действительно не хочу менять на POJO или объект Date (может быть, что-то переопределить, где-нибудь?).

Заранее спасибо!Олле

Ответы [ 2 ]

7 голосов
/ 28 сентября 2011

Вы можете создать собственную реализацию IColumn, которая форматирует значение:

class FormatedPropertyColumn<T> extends PropertyColumn<T> {

    private final Format format;

    public FormatedPropertyColumn(IModel<String> displayModel, String sortProperty, String propertyExpression, Format format) {
        super(displayModel, sortProperty, propertyExpression);
        this.format = format;
    }

    public FormatedPropertyColumn(IModel<String> displayModel, String propertyExpression, Format format) {
        super(displayModel, propertyExpression);
        this.format = format;
    }

    @Override
    protected IModel<?> createLabelModel(IModel<T> rowModel) {
        final IModel<?> originalModel = super.createLabelModel(rowModel);
        return new AbstractReadOnlyModel<String>() {
            @Override
            public String getObject() {
                Object value = originalModel.getObject();
                return (value != null) ? format.format(value) : null;
            }
        };
    }
}

Затем вы передаете желаемый формат при создании его экземпляра.

List<IColumn> columns = Arrays.asList(
    new FormatedPropertyColumn<POJO>(Model.of("Date"), "date", new SimpleDateFormat("yyyy-MM-dd"))
);
5 голосов
/ 28 сентября 2011

С помощью Converter , настроенного в вашем приложении, вы сможете отформатировать дату так, как вы хотите, например.

...