0

如何将 AjaxBehavior 添加到 primefaces MenuItem。

我尝试为菜单项添加 AjaxBehavior 侦听器。但我得到一个例外,即 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> 

爪哇代码:

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。 servlet Faces Servlet 的 service() 抛出异常:javax.faces.view.facelets.TagException: /test1.xhtml 在第 37 行和第 51 列无法附加到非 ClientBehaviorHolder 父级

4

1 回答 1

1

利用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>
于 2013-05-18T10:36:54.417 回答