Dan*_*ara 10 jsf primefaces jsf-2
我正在尝试使用primefaces 4但是没有关于新版本的文档MenuModel
.在这里,Optimus Prime用一个小例子写了关于新菜单系统的文章.
http://blog.primefaces.org/?p=2594
在这一点上,他写了一个setCommand
方法:
这指向一种save
方法(在pf4展示中找到: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!!");
//
}
Run Code Online (Sandbox Code Playgroud)
我想要做的,是要改变spSelected
的ServiceProviderBackingBean
,就像我在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>
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
编辑:
实际上我正在这样做,但我正在寻找一种更好,更清洁的方法来实现这一目标.
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));
//
}
Run Code Online (Sandbox Code Playgroud)
Flo*_*ger 14
通过setParam(key,value)设置命令参数可以这样做:
在菜单生成bean中:
DefaultMenuItem item = new DefaultMenuItem("display list");
item.setId("listMenuItem");
item.setCommand("#{myBean.displayList}");
item.setParam("listId", 1l);
Run Code Online (Sandbox Code Playgroud)
在包含操作的托管bean中:
public String displayList(ActionEvent event) {
MenuItem menuItem = ((MenuActionEvent) event).getMenuItem();
Long id = Long.parseLong(menuItem.getParams().get("listId").get(0));
findListBy(id);
}
Run Code Online (Sandbox Code Playgroud)
阅读参数似乎有点复杂.但是Primefaces 4 MenuItems不支持ActionListeners(因为它们不再是从UICommand派生的)所以params似乎是新的方式.
归档时间: |
|
查看次数: |
15255 次 |
最近记录: |