通过在 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”填充菜单。这是返回它的方法:
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;
}
..在这里您可以看到,作为 new SelectItem 中的第一个参数,我传递了一个对象 Person,我想将其设置为 setter:
public void setPersonOwner(Person person){
getAgreementExt().setOwner(person);
}
但是,这对我不起作用..现在我很高兴知道我做错了什么或我错过了什么。
感谢您的建议!