我有这两个实体有很多关系。
@Entity
public class Stammdaten {
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Language> languages = new ArrayList<Language>();
}
@Entity
public class Language {
@ManyToMany(mappedBy = "languages")
private List<Stammdaten> stammdatens = new ArrayList<Stammdaten>();
}
我有一个已在语言表中保存的20种语言的列表。现在,当用户填写stammdaten表单时,用户从下拉列表中选择20种语言中的一种。然后,在提交表单时,应更新stammdaten和语言的连接表。我怎么能这样做?
目前我有这个表格
<h:form id="stammdaten">
<h:message for="RegisterGroupPanel" style="color:red;" />
<h:panelGrid columns="3" id="RegisterGroupPanel">
<h:outputLabel for="firstName" value="First name : " />
<h:inputText id="firstName" value="#{stammdatenController.stammdaten.firstName}" /> <br />
<h:selectOneMenu value="#{what should be here??}">
<f:selectItems value="#{languageController.list()}" var="language" itemValue="#{language.id}" itemLabel="#{language.name}" />
</h:selectOneMenu>
<h:commandButton action="#{stammdatenController.create()}" value="Send" />
我不明白上面的代码what should be here???
编辑:控制器
@ManagedProperty("#{languageService}")
LanguageService languageService;
private Language language = new Language();
private List<Language> languages;
public void create(){
stammdatenService.save(stammdaten);
FacesContext fc = FacesContext.getCurrentInstance();
ApplicationHelpers.setSuccessMessage("Application created successfully successfully", null);
}
答案 0 :(得分:0)
您的selectonemenu使用language.id
作为itemvalue。
我们假设您的数据库中int
为private selectedLanguageId
。因此,您需要#{selectedLanguageId}
(并创建getter和setter),然后使用#{what should be here}
代替{{1}}。
然后在您的创建操作中,您应该手动执行逻辑 - 根据选定的ID获取语言并将其发送到您的服务。