В Vaadin 7.x
меня есть настройка ComboBox
с использованием JPAContainer
. Он настраивается как:
mycombo.setItemCaptionPropertyId("name");
Прекрасно работает. Однако объект, который сопоставлен с этим комбо, использует столбец CHAR(50)
для name
и это не может быть изменено. Все работает отлично, но раздражает видеть все эти пространства, когда я копирую/вставляю, например, из комбо в другой текстовый ввод.
Естественно, я .trim()
комбо-значение, когда я .trim()
его программным .trim()
но я бы хотел всегда автоматически обрезать дисплей.
Смогу ли я сделать это, создав собственный конвертер?
благодаря
Из-за нехватки времени я не могу найти ничего лучше следующего:
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);
}
}
Проблема в том, что при ее тестировании значение в поле со списком исчезает после его выбора. Если вы можете найти решение, то это здорово, но это то, что я мог бы задуматься на данный момент.
"Apple"
но в базе данных, оно возвращается как"Apple "
. Я хочу, чтобы он показывал"Apple"
хотя это не то, что было загружено из БД.