Hi, I have a Boolean (or enum) data and want to display in NativeSelect in String model:
@Override
protected void init(VaadinRequest request) {
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
setContent(layout);
String YES = "Yes";
String NO ="No";
final NativeSelect select = new NativeSelect("Choose");
select.addItems(Arrays.asList(new String[]{YES, NO}));
select.setNullSelectionAllowed(false);
Boolean dateModelValue = Boolean.FALSE;
// StringToBooleanConverter converter = new StringToBooleanConverter(“Yes”,“No”);
// select.setValue(converter);
/* // case 1
select.setConverter(Boolean.class);
select.setValue(dateModelValue);
// case 2
select.setConverter(String.class);
select.setValue(dateModelValue);
*/
// case 3
select.setConverter(Boolean.class);
select.setValue(NO);
// case 4
/* select.setConverter(String.class);
select.setValue(NO);
*/
select.addValueChangeListener(new ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
Notification.show(String.format(“value=%s, converted value=%s”, select.getValue(), select.getConvertedValue()));
}
});
layout.addComponent(select);
}
I assume that setConvert(…) could support vaule return Boolean and converted value String, or in contrast.
- public void setConverter(Class<?> datamodelType) - test 4 cases above, the results are not as wanted.
- setConverter(Converter<T, ?> converter) - report StringToBooleanConverter is not applicable for the arguments.
So my question is whether setConvert(…) supports NativeSelect for the purpose. if yes, how.