こんにちは、私はVaadinで初心者です。フォームを作成し、そのPOJOオブジェクトにバインドしようとします。Vaadin with SpringBoot
...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: Property type 'java.util.Collection' doesn't match the field type 'java.util.Set< dev.gva.model.Authority >'. Binding should be configured manually using converter.
庁:
public class Authority{
private Long id;
private String authority;
getter/setters..
}
はユーザー:
を0public class User{
private Long id;
private Collection<Authority> authorities;
other fields, getters/setters...
}
このコンバータの書き方は?おかげ
'authorities.setConverter(new Converter、Collection >(){/*...*/})'を試したことがありますか? –
@A.Meierすぐにお試しになります。アドバイスありがとうございます – GVArt