【发布时间】:2017-02-23 11:06:05
【问题描述】:
嗨,我是 Vaadin 的新手,尝试创建表单并绑定到那个 POJO 对象。
...Some declaration
Binder<User> binder = new Binder<>(User.class);
@Autowired
public FormUser(UserRepository userRepository, AuthorityRepository authorityRepository){
this.userRepository = userRepository;
this.authorityRepository = authorityRepository;
authorities = new ListSelect<>("Authorities", authorityRepository.findAll());
authorities.setItemCaptionGenerator(Authority::getAuthority);
//Set items
username.setIcon(FontAwesome.USER);
password.setIcon(FontAwesome.USER_SECRET);
saveButton.addClickListener(e -> {
userRepository.save(user);
});
setSpacing(true);
addComponents(username, password, authorities, saveButton);
binder.bindInstanceFields(this);
}
当尝试访问包含 FormUser 的视图时出现此错误:
java.lang.IllegalStateException:属性类型“java.util.Collection”与字段类型“java.util.Set
”不匹配。应使用转换器手动配置绑定。
权威:
public class Authority{
private Long id;
private String authority;
getter/setters..
}
用户:
public class User{
private Long id;
private Collection<Authority> authorities;
other fields, getters/setters...
}
如何编写这个转换器?谢谢
【问题讨论】:
-
你试过
authorities.setConverter(new Converter<Set<Authority>, Collection<Authority>>(){/*...*/})吗? -
@A.Meier 我会尽快尝试,感谢您的建议
标签: java spring-boot converter vaadin