更改Wicket Datatable中属性的显示方式

时间:2011-09-28 09:22:58

标签: java datatable wicket


我正在Wicket开发一个新的应用程序并遇到了一个小问题。

我正在使用Wicket DataTable,但我希望dable中的某些属性与其“实际”值不同。例如,我有一个日期显示为“2011-09-01 00:00”,但我希望它显示为“2011-09-01”。我该怎么做?

我真的不想更改为POJO或Date对象(可能会覆盖某些内容,某处?)。

提前致谢!
欧莱

2 个答案:

答案 0 :(得分:7)

您可以创建一个自定义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"))
);

答案 1 :(得分:5)

通过使用应用程序中配置的Converter,您可以按照自己的方式格式化日期。