Vaadin 7、JPA 2 和表单绑定



我有两个数据库表和相应的实体类:-

考试类

Entity
@Table(name="exam", schema="xyz")
...
private int examid;
private String examname;
@ManyToOne
@JoinColumn(name="startedby")    
private User startedByUser;
...
public String getStartedByName() {
if (startedByUser != null){
return (startedByUser.getDesign()+' '+startedByUser.getFname()+' '+startedByUser.getLname()).trim();
}else{      
return "N/A";
}
}
...

用户类

Entity
@Table(name="user", schema="xyz")
...
private int userid;
private String username;
private String fname;
private String lname;
...

当我尝试将这些绑定到 Vaadin 表单并使用 startedByUser 集打开现有考试时,一切都按预期工作,我可以显示开始考试的用户。

startedByName = (TextField) fieldGroup.buildAndBind("STARTED BY", "startedByName");

但是,如果这是新考试,则在有人点击"已开始"按钮之前,startBy 用户将为空。此按钮的 onClick 处理程序应将 startedByUser 值设置为当前用户(我将其保存在本地用户对象中(,并且表单应相应地显示 startedByName 值。

我似乎无法使用表单进行设置,这给我留下了一个大问题。

有没有人知道如何实现这一目标?

我知道我可以做到以下几点:-

examItem.getItemProperty("startedByUser").setValue(user);

但这意味着表单无法控制提交。

John。

现在,我使用了一个绑定到表单的组合框。这样,我可以设置用户号,组合框更新为相应的用户名。不确定这是否是最佳选择?