我制作了一张桌子和相应的SQLContainer。该表有一个包含电话号码的列。在db表中,相应列的类型是int。我希望格式化Vaadin表格的值,以便查看电话号码变得没有像千分之一的分隔符(8,888 - > 8888)那样的逗号或点。
我已经对Table做了类似的事情,数据源是这样的JPAContainer:
Table imenikTable = new Table("Imenik", imenikData){
/**
*
*/
private static final long serialVersionUID = 8213291207581835298L;
@Override
protected String formatPropertyValue(Object rowId,
Object colId, @SuppressWarnings("rawtypes") Property property) {
Object v = property.getValue();
if (v instanceof Integer) {
DecimalFormat df = (DecimalFormat) DecimalFormat.getInstance(getLocale());
df.applyLocalizedPattern("##00");
return df.format(v);
}
return super.formatPropertyValue(rowId, colId, property);
}
};
一切都运作良好。但是当我使用SQLContiner而不是JPAContainer进行类似的构造时,简单地忽略了格式。我试图改变这样的方式:
StringToIntegerConverter plainIntegerConverter = new StringToIntegerConverter(){
private static final long serialVersionUID = -7517984934588222147L;
protected NumberFormat getFormat(Locale locale){
NumberFormat format = super.getFormat(locale);
format.setGroupingUsed(false);
return format;
}
};
contaktListTable.setConverter("telbr", plainIntegerConverter);
但我的环境仍然忽略了我,甚至没有错误消息!可能有什么问题?
答案 0 :(得分:1)
我认为
Object v = property.getValue();
当您使用SQLContainer时,不返回Integer值,这就是您没有看到任何异常的原因,条件块没有被执行。
你能用断点检查吗?