格式化 table 的单元格中的值
Formatting the value in the cell of a table
我做了一个table和对应的SQLContainer。 table 有一列包含 phone 个数字。在dbtable中对应列的类型是int。我希望格式化 Vaadin table 的值,使视图 phone 数字变得没有逗号或点,如千位分隔符(8,888 -> 8888)。
我已经用这种方式对数据源是 JPAContainer 的 Table 做了类似的事情:
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);
但我的环境仍然忽略我,甚至没有错误信息!可能是什么问题?
我觉得
Object v = property.getValue();
当您使用 SQLContainer 时没有返回整数值,这就是为什么您没有看到任何异常,条件块没有被执行。
你能用断点检查一下吗?
我做了一个table和对应的SQLContainer。 table 有一列包含 phone 个数字。在dbtable中对应列的类型是int。我希望格式化 Vaadin table 的值,使视图 phone 数字变得没有逗号或点,如千位分隔符(8,888 -> 8888)。
我已经用这种方式对数据源是 JPAContainer 的 Table 做了类似的事情:
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);
但我的环境仍然忽略我,甚至没有错误信息!可能是什么问题?
我觉得
Object v = property.getValue();
当您使用 SQLContainer 时没有返回整数值,这就是为什么您没有看到任何异常,条件块没有被执行。
你能用断点检查一下吗?