在Vaadin 7.x
中,我使用ComboBox
进行JPAContainer
设置。它的设置如下:
mycombo.setItemCaptionPropertyId("name");
效果很好。但是,映射到该组合的实体使用CHAR(50)
的{{1}}列,但无法更改。一切正常,但是当我复制/粘贴时,例如从组合到其他文本输入时,看到所有这些空格都很烦人。
当然,当我以编程方式传递它时我name
组合值,但我想总是自动修剪显示。
我是否可以通过创建自定义转换器来完成此操作?
由于
答案 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);
}
}
问题在于,在测试它时,组合框中的值在我选择后消失。如果你能找到一个解决方案,那就太棒了,但这就是我现在可以想到的。