Vaadin 7 では、電話番号の ComboBox を POJO にネストされた POJO のリストにバインドしようとしています。例: リスト電話を含む PersonVo があります。PersonCommunicationVo には電話番号の値が含まれます。
PersonVo の他のプロパティをバインドするために使用したのは次のとおりです。
BeanFieldGroup<PersonVo>personBinder = new BeanFieldGroup<PersonVo>(PersonVo.class);
personBinder.setItemDataSource(person);
myFormLayout.addComponent(personBinder.buildAndBind("Firstname", "firstName"));
myFormLayout.addComponent(personBinder.buildAndBind("Country", "country.name"));
ここで PersonVo:
@Table(name = "CONTACT.T_PERSON")
@Entity
@Audited
public class PersonVo {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id",updatable = false)
private Long personId;
@Column(name = "FIRSTNAME")
private String firstName;
@Column(name = "LASTNAME")
private String lastName;
@Column(name = "TITLE")
private String title;
...
@OneToMany(fetch = FetchType.LAZY, mappedBy = "personId")
@AuditMappedBy(mappedBy = "personId")
private List<PersonCommunicationVo> **phoneNumbers**;
...
と PersonCommunicationVo:
@Entity
@Table(name = "CONTACT.PERSON_COMMUNICATION")
@Audited
public class PersonCommunicationVo {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id",updatable = false)
private Long persCommId;
@Column(name = "PERSON_ID")
private Long personId;
@ManyToOne
@JoinColumn(name = "COM_TYPE_ID")
private CommunicationTypesVo communicationType;
@Column(name = "VALUE")
private String **value**;
そして、私がやりたいことは、 PersonCommunicationVo の値に基づいて、電話番号のコンボボックスを PersonVoのリストphoneNumbersにバインドすることです。しかし、難しいのは、コンボボックスで選択されたものに基づいて、リスト内の適切な PersonCommunicationVo に到達することです。例: 電話番号 +32 123 456 789 をコンボボックスで選択しました。この値は phoneNumbers.get(indexOfSelectedItem).getValue() にマップする必要があります。電話番号を更新したり、新しいものを追加したりするには...
助けてくれてありがとう!