2015-09-09 1 views
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); 

Но все же моя среда игнорирует меня, даже никаких сообщений об ошибках! Что может быть проблемой?

ответ

1

Я думаю

Object v = property.getValue(); 

не возвращает значение Integer при использовании SQLContainer, и именно поэтому вы не видите каких-либо исключений, условный блок не выполняется.

Можете ли вы проверить это с точкой останова?

+0

Да, я проверил. И я пришел к такому же выводу. Я пытаюсь сделать преобразование на уровне презентации. В базе MySql используется тип int. И какой тип может быть в SQLcontainer перед преобразованием в Table (где он стал String)? – vmaric

+0

Да, я проверяю с точкой останова. это значение не целое. – vmaric

+0

Вы используете Oracle DB? Книга vaadin говорит об этом: при использовании базы данных Oracle большинство или все числовые типы преобразуются в java.math.BigDecimal драйвером JDBC Oracle. –