Search code examples
vaadinnumber-formattingvaadin7

Vaadin7 table sort label column numerically


I have vaadin table with multiple columns. One of the column is of label class

container.addContainerProperty(ID_COLUMN, Label.class, "");

and I fill it up like

referenceItem.getItemProperty(ID_COLUMN).setValue(new Label(new Integer(reference.getId()).toString()));

When I sort the table by clicking on this table, it sorts the data like

1
10
100
2
200
7

So, I tried to change the class to Integer, then it works fine, but I get the numbers with comma like

1
2
...
..
7,456
8,455

How can I have the data sorted numerically and no commas.


Solution

  • I was able to figure out. I used Integer as class for my column and used following

    referenceTable = new Table()
        {
            @Override
            protected String formatPropertyValue(final Object a_row_id, final Object a_col_id, final Property<?> a_property)
            {
                if (a_property.getType() == Integer.class && null != a_property.getValue())
                {
                    DecimalFormat df = (DecimalFormat) DecimalFormat.getInstance(getLocale());
                    df.applyLocalizedPattern("#0");
                    return df.format(a_property.getValue());
                }
                return super.formatPropertyValue(a_row_id, a_col_id, a_property);
            }
        };