2017-06-19 4 views
-1

私はTwinColSelectを持っています。私は値からコードを介して選択しようとしていますが、それは決して行いません。TwinColSelectで値を設定できません

List<Role> list = new RoleJpaController(DataBaseManager.getEntityManagerFactory()).findRoleEntities(); 
BeanItemContainer<Role> roleContainer = new BeanItemContainer<>(Role.class, list); 
TwinColSelect roles = new TwinColSelect(TRANSLATOR.translate("general.role")); 

roles.setContainerDataSource(roleContainer); 
roles.setRows(5); 
roles.setLeftColumnCaption(TRANSLATOR.translate("available.roles")); 
roles.setRightColumnCaption(TRANSLATOR.translate("current.roles")); 
roles.setImmediate(true); 

list.forEach(r -> { 
    roles.setItemCaption(r, TRANSLATOR.translate(r.getDescription())); 
}); 

if (user.getUserHasRoleList() != null) { 
    Set<Role> rs = new HashSet<>(); 
    user.getUserHasRoleList().forEach(uhr -> { 
     if (uhr.getProjectId() == null) { 
      LOG.log(Level.INFO, "Selecting role: {0}", uhr.getRole()); 
      rs.add(uhr.getRole()); 
     } 
    }); 
    roles.setValue(rs); 
} 

私は、役割を選択するロジックが実行されたことをデバッグによって検証しました。

+0

'Role'インスタンスは' findRoleEntities() 'と' user.getUserHasRoleList()。forEach(...) 'の2つです。あなたは 'Role'実装の所有権を持っていますか、それともサードパーティの実装ですか(例:Spring)?それがあなたなら、 'equals()'と 'hashCode()'はどのように実装されていますか? – Morfic

+0

デバッグを介してチェックし、同じ役割を指しています。ユーザーとロールの関係は、多くのものがあります。 equalsは同じIDを見ます。 hashCodeと同じです。 – javydreamercsw

+0

それでいいでしょう。問題を再現するために[sscce](http://sscce.org)を提供できますか?あなたの記述と同じ振る舞いを得るために必要なDB、敏感なデータ、ちょうど基本的なクラスといくつかの偽のデータはありません。 – Morfic

答えて

0

問題は、Roleクラスのequalsメソッドのバグでした。それを固定した後、それは正常に動作します。

関連する問題