Как я могу .trim () отображать поле комбинированного списка Vaadin?

1

В Vaadin 7.x меня есть настройка ComboBox с использованием JPAContainer. Он настраивается как:

mycombo.setItemCaptionPropertyId("name");

Прекрасно работает. Однако объект, который сопоставлен с этим комбо, использует столбец CHAR(50) для name и это не может быть изменено. Все работает отлично, но раздражает видеть все эти пространства, когда я копирую/вставляю, например, из комбо в другой текстовый ввод.

Естественно, я .trim() комбо-значение, когда я .trim() его программным .trim() но я бы хотел всегда автоматически обрезать дисплей.

Смогу ли я сделать это, создав собственный конвертер?

благодаря

  • 0
    Не могли бы вы опубликовать несколько скриншотов? Лучше бы понять
  • 0
    Не сейчас, но я могу позже, если это действительно необходимо. Но в основном, если отображаемое значение комбо должно быть "Apple" но в базе данных, оно возвращается как "Apple " . Я хочу, чтобы он показывал "Apple" хотя это не то, что было загружено из БД.
Теги:
combobox
vaadin
trim
vaadin7

1 ответ

0

Из-за нехватки времени я не могу найти ничего лучше следующего:

public class MyVaadinUI extends UI {

@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = MyVaadinUI.class, widgetset = "com.gabrielruiu.vaadin.AppWidgetSet")
public static class Servlet extends VaadinServlet {
}

@Override
protected void init(VaadinRequest request) {
    final VerticalLayout layout = new VerticalLayout();
    layout.setMargin(true);
    setContent(layout);

    ComboBox comboBox = new ComboBox("my combobox", Arrays.asList("  Killer croc  ", "        Joker", "Penguin      "));
    comboBox.setConverter(new Converter<Object, String>() {

        @Override
        public String convertToModel(Object value, Class<? extends String> targetType, Locale locale) throws ConversionException {
            if (value != null) {
                return value.toString();
            }
            return null;
        }

        @Override
        public Object convertToPresentation(String value, Class<?> targetType, Locale locale) throws ConversionException {
            if (value != null) {
                return value.trim();
            }
            return null;
        }

        @Override
        public Class<String> getModelType() {
            return String.class;
        }

        @Override
        public Class<Object> getPresentationType() {
            return Object.class;
        }
    });
    layout.addComponent(comboBox);
}

}

Проблема в том, что при ее тестировании значение в поле со списком исчезает после его выбора. Если вы можете найти решение, то это здорово, но это то, что я мог бы задуматься на данный момент.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню