我有一个国家课程:
public class Country{
private Long id;
private String name;
}
和一个有两个 Country 字段的 person 类
public class Person{
private Country nationality;
private Country nationality2;
}
现在在 JSF 中,我使用<f:selectItems>
返回国家列表来选择国籍,如下所示:
<h:form id="form1">
<h:selectOneMenu value="#{mybean.person.nationality.id}">
<f:selectItems value="#{mybean.countryList}" var="var" itemValue="#{var.id}"/>
</h:selectOneMenu>
<h:selectOneMenu value="#{mybean.person.nationality2.id}">
<f:selectItems value="#{mybean.countryList}" var="var" itemValue="#{var.id}"/>
</h:selectOneMenu>
<p:commandButton actionListener="#{mybean.save}" update="sometable @form"/>
</h:form>
现在奇怪的问题是,当我提交表单时,分配给第二个字段(nationality2)的值会同时分配给nationality 和nationality2,而不管第一个字段选择了什么。例如,如果selected value for nationality is 1
和selected value for nationality2 is 2
,当我提交表单时both fields have the value 2
。为什么会出现这种情况?
PS:JSF 实现是 Mojarra 2.1.3