1
我做了一個表格和相應的SQLContainer。該表中有一個包含電話號碼的列。在db表中對應列的類型是int。我希望Vaadin表的格式化值能夠使查看電話號碼變得沒有像千位分隔符(8,888 - > 8888)那樣的昏迷或點狀。格式化表格單元格中的值
我已經作出了類似的事情,以表其數據來源是這樣一個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);
但仍然我的環境忽略我,甚至沒有錯誤信息!有什麼問題?
是的,我檢查過。我也得出了同樣的結論。我正在嘗試在演示文稿級別上進行轉換。在MySql基礎中是int類型。什麼類型可以在SQLcontainer轉換之前在表(它變成字符串)? – vmaric
是的,我檢查與斷點。這個值不是整數。 – vmaric
您使用Oracle DB嗎? vaadin這本書講述了這一點:當使用Oracle數據庫時,Oracle JDBC驅動程序將大部分或全部數字類型轉換爲java.lang.BigDecimal的 。 –