Acessar um metodo usando actionListener

Galera,

Estou usando tendado acessar um metodo dentro do meu bean.

Não estou conseguindo, não da erro nem nada.
Estou tentando de dentro da minha p:layoutUnit
Ja coloquei dentro de form e nada.

exemplo:


 <p:layoutUnit id="top" position="north" size="50" >
                    <h:commandButton actionListener="#{themeSwitcherBean.menu}" value="Teste 2" />
 </p:layoutUnit>

Tente colocar dentro de um <h:form>

Eu coloquei e funcionou.
mas quando eu coloco assim não funciona:

[code]
<h:form id=“tableViewFormId” prependId=“false”>
<p:menubar>

                        <p:submenu label="Edit" icon="ui-icon-pencil">
                            <p:menuitem value="Undo" url="#" icon="ui-icon-arrowreturnthick-1-w" id="novo" actionListener="#{themeSwitcherBean.menu}"></p:menuitem>
                            <p:menuitem value="Redo" url="#" icon="ui-icon-arrowreturnthick-1-e" ></p:menuitem>
                        </p:submenu>

                    </p:menubar>[/code]

Leia esse post para entender a diferença entre action e action listener: JSF Mini Livro - Dicas, conceitos e boas práticas.

Tentou colocar o form dentro do menubar? ou do submenu?

O componente menuBar já cria um elemento na view.

Remova o atributo url dos menuitem. Se estiver com URL o actionListener ou o action não é invocado. Aliás não seria melhor você colocar esses commandButtons em um <p:panel>?

Espero ter ajudado :wink:

[quote=Leonardo Gaona]O componente menuBar já cria um elemento na view.[/quote]De onde vc tirou essa informação? Eu li a documentação do primefaces aqui na parte do menuBar e não tinha nada sobre isso.

Galera, Eu resolvi aqui usando o componente p:menuButton ficou mais feinho, mas esta bom.

Valeu galera pela força.

<p:layoutUnit id="top" position="north" size="50" >
                    <h:form id="tableViewFormId" prependId="false">
                        <h:panelGrid columns="2">
                            <p:menuButton value="Cadastros">  
                                <p:menuitem value="Save"  icon="ui-icon-disk" id="novo" actionListener="#{themeSwitcherBean.menu}" update=":formCenter:painel"/>  
                                <p:menuitem value="Update"   icon="ui-icon-arrowrefresh-1-w" />  
                                <p:menuitem value="Delete" icon="ui-icon-close"  ajax="false"/>  
                                <p:separator />  
                                <p:menuitem value="Homepage" url="http://www.primefaces.org" icon="ui-icon-extlink" />  
                            </p:menuButton>
                            <p:menuButton value="Mapa">
                                <p:menuitem value="Mapa" id="mapa" actionListener="#{themeSwitcherBean.menu}" update=":formCenter:painel" />  
                            </p:menuButton>
                        </h:panelGrid>
                    </h:form>
                </p:layoutUnit>

Basta olhar o HTML gerado por um menuBar dentro de uma página. Todo o componente do menu fica aninhado dentro de um form próprio, independente de haver ou não um form externo. Componentes que precisam ser envolvidos por um form são descritos na documentação. O menuButton por exemplo:

[quote]CommandButton usage is similar to standard commandButton, by default commandButton submits
its enclosing form with ajax.
[/quote]

Abraço

Basta olhar o HTML gerado por um menuBar dentro de uma página. Todo o componente do menu fica aninhado dentro de um form próprio, independente de haver ou não um form externo. Componentes que precisam ser envolvidos por um form são descritos na documentação. O menuButton por exemplo:

[quote]CommandButton usage is similar to standard commandButton, by default commandButton submits
its enclosing form with ajax.
[/quote]

Abraço[/quote]Eu olhei aqui no exemplo do primefaces e não vi isso, pelo contrário só vi o form que foi declarado no código:

O exemplo que analisei foi: http://primefaces.org/showcase/ui/menubar.jsf

No exemplo não é gerado um form por já existir um envolvendo os menus. Inserindo um menubar em uma view que não possua um form declarado, ao checar o HTML gerado pode-se ver que o primefaces cria um form para o menuBar

[quote=Leonardo Gaona]No exemplo não é gerado um form por já existir um envolvendo os menus. Inserindo um menubar em uma view que não possua um form declarado, ao checar o HTML gerado pode-se ver que o primefaces cria um form para o menuBar[/quote]Criei um exemplo aqui usando apenas menubar e não achei o form, onde o form deveria ser criado? Eu não estou conseguindo achar:

[code]

<h:head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>aSecretaria</title>
</h:head>

<h:body>
    <p:menubar>
       <p:submenu label="Edit" icon="ui-icon-pencil">
           <p:menuitem value="Undo" url="#" icon="ui-icon-arrowreturnthick-1-w" id="novo" actionListener="#{themeSwitcherBean.menu}"></p:menuitem>
           <p:menuitem value="Redo" url="#" icon="ui-icon-arrowreturnthick-1-e" ></p:menuitem>
       </p:submenu>

   </p:menubar>
</h:body>
[/code]

O Facelets me pregou uma peça. Havia um form declarado dentro da div header do meu layout.

Peço desculpas pela informação incorreta :oops:

[quote=Leonardo Gaona]O Facelets me pregou uma peça. Havia um form declarado dentro da div header do meu layout.

Peço desculpas pela informação incorreta :oops: [/quote]tranquilo.
Eu estranharia o fato dele criar form automático pois ele poderia acabar aninhando form o que seria um grande problema.