2013-05-18 3 views
0

Как добавить AjaxBehavior к свойствам MenuItem.Как использовать Ajax Поведение к пунктам меню

Я попытался добавить прослушиватель AjaxBehavior для пункта меню. Но я получаю исключение, что MenuItem не поддерживает Ajax Behavior.

Как добавить поведение 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] [по умолчанию-хост] [/ icareweb] [Грани Servlet]] (http-localhost-127.0.0.1-8080-1) Servlet.service() для сервлета Лица Servlet забросили исключение: javax.faces.view.facelets.TagException: /test1.xhtml в строке 37 и столбце 51 Не удалось выполнить приложить к non-ClientBehaviorHolder parent

ответ

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> 
Смежные вопросы