Problemas com Navegação JSF 2.0

Eai galera, blz? Creio que deve ser coisa besta, mas estou quebrando a cabeça com isso faz um tempinho já!

Bom, tenho um template.xhtml feito com facelets e PrimeFaces que tem um menu. Esse menu tem um <p:menuitem /> com um action para direcionar para a página telaCategoria.xhtml.

[code]

<f:view contentType=“text/html”>
<h:head>
Projeto Cinema
</h:head>
<h:body>
<h:form id=“templateForm”>
<p:layout fullPage=“true”>
<p:layoutUnit position=“top” height=“150”>
APIHC
- Projeto Cinema
</p:layoutUnit>

			<p:layoutUnit position="left" width="300" header="Menu"
				resizable="true" closable="false" collapsible="true">
				<p:menu style="width: 278px">
					<p:submenu label="#{msgs['menu.parametros']}">
						<p:menuitem value="Categoria"
							action="#{categoriaBean.telaCategoria}" />
					</p:submenu>
				</p:menu>
			</p:layoutUnit>

			<p:layoutUnit position="center">
				<ui:insert name="content"></ui:insert>
			</p:layoutUnit>

			<p:layoutUnit position="bottom" height="50">
				<span
					style="font-size: 16px; position: absolute; top: 10px; left: 100px;">
					Projeto Cinema - An&aacute;lise, Projeto e Interfaces Humano
					Computador. </span>
			</p:layoutUnit>
		</p:layout>
	</h:form>
</h:body>

</f:view>

[/code]

E aqui está o método do Managed Bean:

public String telaCategoria() { prepararEntidade(); preencherLista(); return "telaCategoria"; }

Estou utilizando a navegação implicita do JSF 2.0, ou seja, não há nenhuma navigation-rule no faces-config.xml.
Mas as duas páginas estão no mesmo pacote e o método da Managed Bean está sendo chamado! (conferi por debug)
Porém quando clico no item do menu nada acontece… não direciona pra telaCategoria.xhtml e nem dá erro :frowning:

Alguém tem uma luz??

Obs.: Estou usando Tomcat 7.0.14 com Mojarra (não sei se ajuda) rs

Acho que tem que ser ajax = “false” no p:menuItem.

Uma dica: tira esse <h:form id=“templateForm”> que está pegando o layout todo, coloca só no menu.

Com ajax = “false” funcionou cara!
Mas eu queria mesmo que fosse feito via ajax… não teria jeito?

Se eu tiver falando besteira, me perdoem desde já, e fiquem a vontade para me corrigir

Não vejo muito sentido navegar para uma pagina nova completa usando o AJAX, normalmente quando acionamos comandos via AJAX queremos que ele re-renderize parcialmente a pagina

Neste POST tem um colega que usa o menuitem apontando para um frame, de repente pode t ajudar na definição do leiaute.

É que eu estou usando facelets, portanto não há necessidade de eu usar um frame, pois as novas páginas serão renderizadas no <ui:insert name=“content”></ui:insert>.

Quem já usou facelets sabe do que eu estou falando… eu mesmo já fiz um template parecido no passado que tinha um menu que em seus itens haviam actions com chamadas ajax para serem renderizadas no ui:insert/, mas usando o Richfaces.

Eu lembro que era algo assim no Richfaces:

<rich:menuItem submitMode="ajax" value="Stuff" action="#{managedBean.metodo}" />

E funcionava de boa!
Eu vi no show case do PrimeFaces que o <p:menuitem /> deles usa ajax por padrão caso você não indique o ajax = “false”… mas no meu exemplo simplesmente não funciona :frowning:

Pois é, para commandLink e commandButton sei que o PM não suporta navegacao via ajax conforme a questao 4 no FAQ no site do PrimeFaces

[quote]Why navigations do not work with PrimeFaces commandButton and commandLink?
PrimeFaces does not support forward based navigations within an ajax request, you need to do redirect instead or set ajax to false.[/quote]
Agora para menu pode ser que foi seguido a mesma linha.

Vendo com mais calma o show case do menu… todos os exemplos do PrimeFaces (ajax e os não-ajax) são feitos através de actionListerners. Provável que numa navegação através de actions o Prime não dê suporte a ajax mesmo.

Porém acho que isso deveria estar explícito no exemplos… até porque acredito que dificilmente alguém vai usar um menu para um processo que não seja um backend. Ou estou errado? :?

Mas mesmo assim agradeço a ajuda de todos ae!! :smiley: