如何将AjaxBehavior添加到primefaces MenuItem。
我尝试为菜单项添加AjaxBehavior listenet。但我得到一个例外,即MenuItem不支持任何Ajax行为。
如何将Ajax行为添加到菜单项?
<h:form>
<p:growl id="messages" />
<h3>Default Menubar</h3>
<p:menubar>
<p:submenu label="File" icon="ui-icon-document">
<p:submenu label="New" icon="ui-icon-contact">
<p:menuitem value="Project" url="#" />
<p:menuitem value="Other" url="#" />
</p:submenu>
<p:menuitem value="Open" url="#" />
<p:separator />
<p:menuitem value="Quit" url="#" />
<p:ajax event="change" listener="#{workflowController.changeMenu}" execute="@this" ></p:ajax>
</p:submenu>
<p:submenu label="Edit" icon="ui-icon-pencil">
<p:menuitem value="Undo" url="#"
icon="ui-icon-arrowreturnthick-1-w" />
<p:menuitem value="Redo" url="#"
icon="ui-icon-arrowreturnthick-1-e" />
</p:submenu>
<p:submenu label="Help" icon="ui-icon-help">
<p:menuitem value="Contents" url="#" />
<p:submenu label="Search" icon="ui-icon-search">
<p:submenu label="Text">
<p:menuitem value="Workspace" url="#" />
</p:submenu>
<p:menuitem value="File" url="#" />
</p:submenu>
</p:submenu>
</p:menubar>
</h:form>
java代码:
public void changeMenu(AjaxBehaviorEvent event) {
try {
Object selectOneMenuObject = (event.getSource());
MenuItem mi=(MenuItem) selectOneMenuObject;
String category = ((String) mi.getValue());
} catch (Exception e) {
log.info("class : EditPayeeProfileController,Method : changePayeeType "
+ e);
e.printStackTrace();
}
}
错误: [org.apache.catalina.core.ContainerBase。[jboss.web]。[default-host]。[/ icareweb]。[Faces Servlet]](http-localhost-127.0.0.1-8080-1)Servlet.service( )for servlet Faces Servlet抛出异常:第37行和第51列的javax.faces.view.facelets.TagException:/test1.xhtml无法附加到非ClientBehaviorHolder父级
答案 0 :(得分:0)
使用action
<p:menubar>
<p:menuitem label="Some action" action="#{bean.someAction}"/>
</p:menubar>
或actionListener
属性
<p:menubar>
<p:submenu label="My sub">
<p:menuitem value="Another action" actionListener="#{bean.otherActionListener}" />
</p:submenu>
</p:menubar>