我有一个与通过在SelectOneMenu中选择idem来设置属性相关的问题。 就是这个: 在表示层我有:
<h:selectOneMenu id="fio" value="#{page.personOwner}" disabled="#{page.readonly}" readonly="#{page.readonly}" >
<a4j:support event="onchange" reRender="generalForm" ajaxSingle="true" />
<f:selectItems value="#{page.agrGrpRelInsPersons}" ></f:selectItems>
</h:selectOneMenu>
所以,我可以使用'agrGrpRelInsPersons'填充菜单,这是List。这是返回它的方法:
public List<SelectItem> getAgrGrpRelInsPersons(){
List<SelectItem> persons = new ArrayList<SelectItem>();
for(AgrGrpRel agrGrpRel : getAgreement().getAgrGrpRels()){
for(InoPerRel inoPerRel :agrGrpRel.getAgreement().getInsObject().getInoPerRels()){
persons.add(new SelectItem(((Person)inoPerRel.getPerson()), inoPerRel.getPerson().getName1()+" "+inoPerRel.getPerson().getName2()+" "+inoPerRel.getPerson().getName3()));
}
}
return persons;
}
..在这里你可以看到,作为新SelectItem中的第一个参数我传递了一个对象Person,我想将它设置为setter:
public void setPersonOwner(Person person){
getAgreementExt().setOwner(person);
}
然而,这对我不起作用.. 现在我很高兴知道我做错了什么或我错过了什么。
感谢您的建议!