我有一个这样的组合框:
<rich:select id="foo" value="#{fooVo.selectedFoo}" defaultLabel="Please select one">
<f:selectItems value="#{fooVo.fooList}"/>
</rich:select>
当我试图从列表中选择一个条目时,fooVo.selectedFoo
它是空的。我发现 setter of fooVo.selectedFoo
is not call。
这是豆子:
@ManagedBean(name="fooVo")
@SessionScoped
public class FooVo {
private List<SelectItem> fooList = new ArrayList<SelectItem>();
private String selectedFoo;
/** getter and setter **/
}
假设selectedFoo
应该填写选定的条目,我可以知道这个问题应该如何解决吗?
2012 年 8 月 15 日更新 - fooList 如何更新?
列表的构造在 DAO 中:
public List<SelectItem> getFooList() {
List<SelectItem> newList = new ArrayList<SelectItem>();
Integer theValue = ...;
String theLabel = ...;
newList.add(new SelectItem(theValue.toString(), theLabel));
}
然后newList
将返回到 BOC 并由一个局部变量保存,在做一些其他处理工作后,这newList
将移动到另一个 ActionBean 类,如下所示:
public List<SelectItem> processFooList() {
...
List<SelectItem> theList = theDao.getFooList();
return theList;
}
fooVo
而在 ActionBean 类中,这个列表最终将通过 Spring 依赖注入到达托管 bean :
@ManagedBean(name="theAction")
@SessionScoped
public class ActionBean {
@ManagedProperty(value="#{fooVo}")
private FooVo fooVo;
public void setTheBo(IBoc theBo) {
this.theBoc = theBo;
this.FooVo.setFooList(theBo.processFooList());
}
}
我在设置器 Spring DI 期间填写了fooVo
fooList,因为我希望在fooList
加载页面时准备好。