我正在使用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>
最后一件事,当页面重新加载时,实际选择的项目不会保留在选择菜单中。
任何反馈都非常感谢。谢谢!