我怎么能.trim()Vaadin组合框的显示区域?

时间:2014-06-05 13:07:03

标签: java combobox vaadin trim vaadin7

Vaadin 7.x中,我使用ComboBox进行JPAContainer设置。它的设置如下:

mycombo.setItemCaptionPropertyId("name");

效果很好。但是,映射到该组合的实体使用CHAR(50)的{​​{1}}列,但无法更改。一切正常,但是当我复制/粘贴时,例如从组合到其他文本输入时,看到所有这些空格都很烦人。

当然,当我以编程方式传递它时我name组合值,但我想总是自动修剪显示。

我是否可以通过创建自定义转换器来完成此操作?

由于

1 个答案:

答案 0 :(得分: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);
}

}

问题在于,在测试它时,组合框中的值在我选择后消失。如果你能找到一个解决方案,那就太棒了,但这就是我现在可以想到的。