0

我有一个这样的组合框:

<rich:select id="foo" value="#{fooVo.selectedFoo}" defaultLabel="Please select one">
  <f:selectItems value="#{fooVo.fooList}"/>
</rich:select>

当我试图从列表中选择一个条目时,fooVo.selectedFoo它是空的。我发现 setter of fooVo.selectedFoois 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 期间填写了fooVofooList,因为我希望在fooList加载页面时准备好。

4

0 回答 0