Java 更改属性在Wicket Datatable中的显示方式
Java 更改属性在Wicket Datatable中的显示方式,java,datatable,wicket,Java,Datatable,Wicket,我正在Wicket中开发一个新的应用程序,遇到了一个小问题 我使用的是Wicket DataTable,但我希望表中的某些属性的显示方式与其“实际”值不同。例如,我有一个日期显示为“2011-09-01 00:00”,但我希望它显示为“2011-09-01”。我该怎么做 我真的不想更改为POJO或日期对象(可能会覆盖某些东西,在什么地方?) 提前谢谢! Olle通过使用应用程序中配置的,您将能够以您想要的方式格式化日期,例如。您可以创建一个自定义IColumn实现,该实现可以格式化值: clas
我正在Wicket中开发一个新的应用程序,遇到了一个小问题 我使用的是Wicket DataTable,但我希望表中的某些属性的显示方式与其“实际”值不同。例如,我有一个日期显示为“2011-09-01 00:00”,但我希望它显示为“2011-09-01”。我该怎么做 我真的不想更改为POJO或日期对象(可能会覆盖某些东西,在什么地方?) 提前谢谢!
Olle通过使用应用程序中配置的,您将能够以您想要的方式格式化日期,例如。您可以创建一个自定义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;
}
};
}
}
class FormattedPropertyColumn扩展了PropertyColumn{
私人最终格式;
公共格式化PropertyColumn(IModel显示模型、字符串sortProperty、字符串propertyExpression、格式){
super(displayModel、sortProperty、propertyExpression);
this.format=格式;
}
公共格式化PropertyColumn(IModel显示模型、字符串propertyExpression、格式){
超级(displayModel、propertyExpression);
this.format=格式;
}
@凌驾
受保护的IModel createLabelModel(IModel rowModel){
最终IModel originalModel=super.createLabelModel(rowModel);
返回新的AbstractReadOnlyModel(){
@凌驾
公共字符串getObject(){
对象值=originalModel.getObject();
返回(值!=null)?格式。格式(值):null;
}
};
}
}
然后在实例化时传递所需的格式
List<IColumn> columns = Arrays.asList(
new FormatedPropertyColumn<POJO>(Model.of("Date"), "date", new SimpleDateFormat("yyyy-MM-dd"))
);
List columns=Arrays.asList(
新的格式化属性列(型号为(“日期”),“日期”,新的简化格式为(“yyyy-MM-dd”))
);
此方法的问题在于此设置是全局设置。它不仅会改变这个特定表格的格式,还会改变你显示日期的每个地方(除非你在本地重写它)。是的,我给出了这个提示作为起点,因为他似乎是从Wicket开始的。您必须小心使用应用程序范围的Converter
sye。有时候这是合适的,但是你必须确定你想要全球化。谢谢。是的,我是wicket的初学者:),在我的情况下,它适合全局设置,所以这是完美的。这是一个非常好的答案,除了我会使用IConverter而不是Format类。