Primefaces 4、动态菜单setCommand方法 [英] Primefaces 4, dynamic menu setCommand method
问题描述
我正在尝试 primefaces 4,但没有关于新 MenuModel
的文档.在这里,Optimus Prime 用一个小例子介绍了新的菜单系统.):
在这个介绍之后,这里是问题/问题.我正在从 bean 创建一个动态菜单,但我不明白如何知道用户单击的菜单并执行正确的操作.
public void init() {如果(spBean == null){System.out.println("spBean 为空!");返回;}for (ServiceProvider sp: spBean.getListaSP()) {DefaultMenuItem item = new DefaultMenuItem(sp.getNome());//item.setUrl("#");item.setIcon("images/sps/" + sp.getImageId() + ".png");item.setCommand("#{dockMenuBackingBean.setNewMenu}");//模型.addElement(item);System.out.println(sp.getNome());}}公共无效 setNewMenu() {System.out.println("一个菜单被点击但是女巫菜单?啊啊!!");//}
我想要做的是更改 ServiceProviderBackingBean
中的 spSelected
,就像我在 PF3.5 中所做的那样:
<c:forEach items="#{serviceProvidersBean.sps}" var="sp"><p:菜单项value="#{sp.spInstanceName}"icon="/images/sps/#{sp.spInstanceId}.png"update=":form:spDetail" ><f:setPropertyActionListener值="#{sp}"target="#{serviceProvidersBean.spSelected}"/></p:menuitem></c:forEach></p:dock>
有什么帮助吗?
实际上我正在这样做,但我正在寻找一种更好、更简洁的方法来实现这一目标.
public void init() {如果(spBean == null){System.out.println("spBean 为空!");返回;}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(命令);//模型.addElement(item);System.out.println(sp.getNome());}}公共无效setNewMenu(对象x){Integer selectedId = Integer.parseInt((String)x);System.out.println("菜单已更改" + Integer.toString(selectedId));//}
Optimus 这里,使用 setParam(key,value).为此,您需要更新到中继代码.
I'm trying primefaces 4 but there are no documentation around for the new MenuModel
. Here, Optimus Prime wrote about the new menu system with a little example.
http://blog.primefaces.org/?p=2594
At this point, he wrote about a setCommand
method:
This point to a save
method (found in the pf4 showcase: http://www.primefaces.org/showcase/ui/menu/menu.xhtml):
After this introduction, here's the question/problem. I'm creating a dynamic menu from a bean but I don't understand how know the menu clicked by the user and do the right operation.
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!!");
//
}
What I want to do, is to change the spSelected
in ServiceProviderBackingBean
, like I've done in 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>
Any help?
EDIT:
Actually I'm doing this, but I'm looking for a better and cleaner way to achieve this.
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));
//
}
Optimus here, use setParam(key,value). You need to update to trunk code though for this.
这篇关于Primefaces 4、动态菜单setCommand方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!