私は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!!");
//
}
私がやりたいことは、PF3.5 で行ったようにspSelected
inを変更することです。ServiceProviderBackingBean
<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));
//
}