我有一个bean,它有一个项目列表,并创建一个菜单模型:
@ManagedBean
@SessionScoped
public class ItemController implements Serializable{
private List<Item> items; //list of items (String, id)
private MenuModel model;
public void loadMenu(){
model = new DefaultMenuModel();
ELContext elCtx = FacesContext.getCurrentInstance().getELContext();
ExpressionFactory expFact = FacesContext.getCurrentInstance().getApplication().getExpressionFactory();
Submenu submenu = new Submenu();
submenu.setLabel("Your items:");
for(int i = 0; i < items.size(); i++){
MenuItem item = new MenuItem();
item.setId("lm" + items.get(i).getId());
item.setValue(items.get(i).getName());
item.setAjax(false); //sonst setupdate setzen!
item.setActionExpression(expFact.createMethodExpression(elCtx, "#{itemController.loadItem("+items.get(i).getId()+")}", Void.class, new Class[]{Integer.class}));
submenu.getChildren().add(item);
}
model.addSubmenu(submenu);
}
public void loadItem(int id){
System.out.println("EXECUTED: " + id);
}
// ...getters and setters here...
}
但是每次单击一个菜单项时,“loadItem(int id)”方法的执行次数比上次点击的次数多一次。
例如,记录器打印:
当我让页面重新加载URL时,它会重置并重新开始。刷新不会改变任何东西,当我手动创建相同的菜单时,它完美地工作。这是一个错误吗?
有人可以帮忙吗?我不知道是什么让菜单项像这样。