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