我做了一个转换器:VAADIN:为什么我无法将转换器设置为ComboBox?
public class BooleanToDateConverter implements Converter<Boolean, Date> {
private static final long serialVersionUID = 1L;
@Override
public Date convertToModel(Boolean value, Class<? extends Date> targetType, Locale locale)
throws com.vaadin.data.util.converter.Converter.ConversionException {
if (value == true) {
return new Date();
} else {
return null;
}
}
@Override
public Boolean convertToPresentation(Date value, Class<? extends Boolean> targetType, Locale locale)
throws com.vaadin.data.util.converter.Converter.ConversionException {
if (value == null) {
return false;
} else {
return true;
}
}
@Override
public Class<Date> getModelType() {
return Date.class;
}
@Override
public Class<Boolean> getPresentationType() {
return Boolean.class;
}
}
然后,我有一个Vaadin组合框myComboBox 我尝试我的转换器设置为它:
myComboBox.setConverter(new BooleanToDateConverter());
然后我得到在Eclipse中的错误说:
The method setConverter(Class<?>) in the type AbstractField<Object> is not applicable for the arguments (BooleanToDateConverter)
但是,我看到其他转换器被类似地使用,他们没有得到错误。为什么?
我决定稍后以不同的方式解决这个问题。我在视图正在处理的实体bean中将决策逻辑创建为瞬态方法。对我和其他许多人来说,很好的答案仍然很有帮助。 –
TL; DR:只能在通用PRESENTATION类型为Object的select组件上设置转换器实例 – ropo