我p:slideMenu
通过将值绑定到MenuModel
支持 bean 中的 a 来构建 a 的内容。这是必要的,因为内容是根据数据库查询的结果动态生成的。使用
@Named
@ViewScoped
public class BackingBeanView0 implements Serializable {
private static final long serialVersionUID = 1L;
private MenuModel menuModel = new DynamicMenuModel();
@PostConstruct
private void init() {
DefaultMenuItem menuItem = new DefaultMenuItem("Click me!",
null, //icon
"/index.xhtml" //url
);
menuItem.setCommand("#{backingBeanView0.onMenuItemClick('Hello world!')}");
menuItem.setImmediate(true);
menuModel.addElement(menuItem);
}
[getter and setter for menuModel]
public void onMenuItemClick(String message) {
System.out.println(BackingBeanView0.class.getName()+" message: "+message);
}
}
正如@Melloware 推荐的那样(这并不表明需要在支持 bean 中创建模型)导致backingBeanView0.onMenuItemClick
不被调用
延迟显示几秒钟。将所需的支持 bean 方法移动到视图范围的 bean 不会改变这种行为。
onXXX
Javascript 回调的属性DefaultMenuItem
不能用于触发支持 bean afaik 中的方法。我注意到Primefaces 源代码中没有使用 in 的command
属性,并且 Primefaces 6.2 用户指南中没有记录它。DefaultMenuItem
我在https://gitlab.com/krichter/primefaces-menuitem-bean-callback提供 SSCCE 。它不包含比上述 MCVE 更多的信息,只是为了便于调查问题而存在。
我正在使用 Primefaces 6.2。