0

我正在使用 JSF 1.2,可以使用一些建议。我有一个 FMB (PlanFMB.java),其中包含一个选择项的数组列表和一个 selectedItem。

当页面加载时,getProjects() 方法被正确调用并按预期显示项目。奇怪的是,getSelectedItem() 方法被调用了三次(每个项目一次)。不确定这是否是典型行为:

SystemOut     O getSelectedItem = null
SystemOut     O getSelectedItem = null
SystemOut     O getSelectedItem = null

另外,我的 JSP 中有一个命令链接,当单击它时会执行相同的操作,会调用 getSelectedItem() 方法三次:

<h:commandLink action="#{planDocBean.classAction}" id="classActionENLink">

PlanFMB.java

String selectedItem = null;

private List<SelectItem> selectItems = null;

public String getSelectedItem() {
      System.out.println("getSelectedItem = " + selectedItem);
      return selectedItem;
}

public void setSelectedItem(String selectedItem) {
    this.selectedItem = selectedItem;
    System.out.println("setSelectedItem = " + selectedItem);
}

public List<SelectItem> getProjects() {       
  if (selectItems == null) {
    selectItems = new ArrayList<SelectItem>();
    selectItems.add(new SelectItem("Project1", "Project1"));
    selectItems.add(new SelectItem("Project2", "Project2"));
    selectItems.add(new SelectItem("Project3", "Project3"));
  }
  return selectItems;
}

<h:selectOneMenu id="items" value="#{planDocBean.selectedItem}"> 
<f:selectItems value="#{planDocBean.projects}" />
</h:selectOneMenu>  

最后一件事,当页面重新加载时,实际选择的项目不会保留在选择菜单中。

非常感谢任何反馈。谢谢!

4

0 回答 0