我正在尝试primefaces 4,但是没有新的菜单模型的文档。在这里,擎天柱用一个小例子描述了新的菜单系统。http://blog.primefaces.org/?p=2594
此时,他写了一个
setCommand
方法:
这指向一个
保存
方法(可在pf4 showcase中找到:http://www.primefaces.org/showcase/ui/menu/menu.xhtml):
在这篇介绍之后,问题来了。我正在从一个bean创建一个动态菜单,但我不明白如何知道用户点击的菜单并执行正确的操作。
public void init() {
if (spBean == null) {
System.out.println("spBean is NULL!");
return;
}
for (ServiceProvider sp: spBean.getListaSP()) {
DefaultMenuItem item = new DefaultMenuItem(sp.getNome());
//item.setUrl("#");
item.setIcon("images/sps/" + sp.getImageId() + ".png");
item.setCommand("#{dockMenuBackingBean.setNewMenu}");
//
model.addElement(item);
System.out.println(sp.getNome());
}
}
public void setNewMenu() {
System.out.println("A menu was clicked BUT witch menu? Arghh!!");
//
}
我想做的是更改
ServiceProviderBackingBean
中的spSelected
,就像我在PF3中做的那样。5:
<p:dock>
<c:forEach items="#{serviceProvidersBean.sps}" var="sp">
<p:menuitem
value="#{sp.spInstanceName}"
icon="/images/sps/#{sp.spInstanceId}.png"
update=":form:spDetail" >
<f:setPropertyActionListener
value="#{sp}"
target="#{serviceProvidersBean.spSelected}" />
</p:menuitem>
</c:forEach>
</p:dock>
有什么帮助吗?
编辑:
事实上,我正在这样做,但我正在寻找一种更好、更干净的方法来实现这一点。
public void init() {
if (spBean == null) {
System.out.println("spBean is NULL!");
return;
}
for (ServiceProvider sp: spBean.getListaSP()) {
DefaultMenuItem item = new DefaultMenuItem(sp.getNome());
//item.setUrl("#");
item.setIcon("images/sps/" + sp.getImageId() + ".png");
String command = String.format("#{dockMenuBackingBean.setNewMenu('%d')}", spBean.getListaSP().indexOf(sp));
item.setCommand(command);
//
model.addElement(item);
System.out.println(sp.getNome());
}
}
public void setNewMenu(Object x) {
Integer selectedId = Integer.parseInt((String)x);
System.out.println("Menu changed " + Integer.toString(selectedId));
//
}
擎天柱在这里,使用setParam(键,值)。为此,您需要更新到主干代码。
通过setParam(key, value)设置命令参数可以这样完成:
在生成bean的菜单中:
DefaultMenuItem item = new DefaultMenuItem("display list");
item.setId("listMenuItem");
item.setCommand("#{myBean.displayList}");
item.setParam("listId", 1l);
在托管bean中包含以下操作:
public String displayList(ActionEvent event) {
MenuItem menuItem = ((MenuActionEvent) event).getMenuItem();
Long id = Long.parseLong(menuItem.getParams().get("listId").get(0));
findListBy(id);
}
读取参数似乎有点复杂。但是ActionListeners不支持Primeface 4 MenuItem(因为它们不再从UICommand派生),所以params似乎是一种新的方式。
本文向大家介绍AngularJS动态菜单操作指令,包括了AngularJS动态菜单操作指令的使用技巧和注意事项,需要的朋友参考一下 前言 在我们创建一个angularJS应用的时候,菜单往往往是不可或缺的元素之一。也许在我们静态菜单的时候不会发现在指令中操作菜单收缩、折叠展开没有任何问题,因为我们在操作之前,页面元素渲染已经完成,所以在指令里面通过element查找目标元素可以成功
实现带动画效果的下拉菜单。用户按下菜单按钮,出现下拉按钮,用户松开菜单按钮,下拉按钮收回。 [Code4App.com]
Since 8.2 setToolbarMenu 自定义分享面板第二栏的工具栏内容。 注意:由于苹果的ATS限制,icon URL必须为https链接或base64,http链接会被忽略 使用方法 AlipayJSBridge.call('setToolbarMenu', { menus: [ { name: "字体", tag: "H5MenuActionOf
在时间视图中,从显示屏上方向下滑动,可下拉快速设置菜单。向左或向右滑动进行浏览,轻触可选择免打扰功能或飞行模式: 闹钟 : 设置闹铃重复:关闭、一次、周一至周五或每天。如果您选择一次、周一至周五或每天,同时也要设置闹钟的时间。 设置闹铃后,时间视图中将显示时钟图标。 免打扰:轻触免打扰图标可启用它,再次轻触将关闭图标。当启用免打扰时,您不会收到任何通知或来电提醒。背光灯激活手势也会被禁用。 飞行模
在时间视图中,从显示屏上方向下滑动,可下拉快速设置菜单。 向左或向右滑动进行浏览,轻触可选择一个功能。 轻触 可定制您想在快速设置菜单中看到的功能。从闹铃、倒计时器、请勿打扰和飞行模式中进行选择。 闹铃:设置闹铃重复:关闭、一次、周一至周五或者 每天。如果您选择一次、周一至周五或每天,同时也要设置闹钟的时间。 启用闹铃后,时间视图中将显示时钟图标。 倒计时器:选择设置计时器,然后设置倒计时时间并按
为您重复使用的命令行任务设置快捷方式。如果你发现自己需要在命令行中重复输入同样的东西,那么设置命令行快捷方式非常有必要。 TL;DR 使命令行为您工作;创建容易记住和快速键入的别名。 尝试保存 Github dotfiles 项目,共享和同步您的命令行快捷方式。 如何设置快捷方式 创建命令行快捷方式的最简单的方法是将常用命令的别名添加到bashrc文件。 在Mac或Linux上: 从命令行的任何位