Getter多次调用 - 所选项目未保留在JSP中

时间:2013-07-10 22:27:11

标签: jsf jsf-1.2

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

当页面加载时,正确调用getProjects()方法并按预期显示Projects。但奇怪的是,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>  

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

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

0 个答案:

没有答案