【问题标题】:Vaadin with SpringBoot带有 Spring Boot 的 Vaadin
【发布时间】: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&lt;Set&lt;Authority&gt;, Collection&lt;Authority&gt;&gt;(){/*...*/})吗?
  • @A.Meier 我会尽快尝试,感谢您的建议

标签: java spring-boot converter vaadin


【解决方案1】:

您应该使用 SetList 作为User-class 中的authorities-attribute,而不是为转换添加样板代码。这样做的一个好处是在authorities 中不允许重复。 SetList 的区别在于 List 是有序的,可以通过索引访问。您决定需要什么,但 设置 可能就足够了。

【讨论】:

    猜你喜欢
    • 2018-07-28
    • 2021-11-13
    • 2017-12-30
    • 2021-05-13
    • 2021-05-27
    • 1970-01-01
    • 2021-07-02
    • 2015-06-14
    • 2015-11-14
    相关资源
    最近更新 更多