Dúvida: JSF 2 - regras de navegação

9 respostas
M

Como mapeio as regras de navegação no jsf 2.0? Alguém poderia dar um exemplo de como faço isso?

9 Respostas

M

No Arquivo faces-config.xml eu faço assim

<navigation-rule>
<from-view-id>/login.jsp</from-view-id>
<navigation-case>

<from-outcome>success</from-outcome>
<to-view-id>/mainmenu.jsp</to-view-id>
</navigation-case>

<navigation-case>
<from-outcome>failure</from-outcome>
<to-view-id>/login.jsp</to-view-id>
</navigation-case>

<navigation-case>
<from-outcome>mainmenu</from-outcome>
<to-view-id>/mainmenu.jsp</to-view-id>
</navigation-case>
</navigation-rule>

Segue um exemplo mais simples só que em JSF 1.2 , mas a regra é a mesma .

<navigation-rule>
<from-view-id>/helloForm.jsp</from-view-id>

<navigation-case>
<from-outcome>mensagem</from-outcome>
<to-view-id>/helloMessage.jsp</to-view-id>
</navigation-case>

</navigation-rule>

na pagina hello Message.jsp

<h:commandButton value="OK" action="mensagem"/>

O atributo action do componente commandButton
pode ser o outcome (resultado) da regra de
navegação que criamos;
 Desta forma, quando o usuário clicar no botão, será
direcionado para a página helloMessage.jsp.

M

Este outcome geralmente , voce redireciona do seu controller/Back bean onde seus metódos de logica sempre devem retornar uma String , ai por exemplo se retornar “sucesso”, o case vai mandar para cadastroSucesso.jsp se retornar Dtring"erro" voce pode fazer outro case dentro deste mesmo navigation-rule
Exemplo

<navigation-rule>
		<from-view-id>/usuario/cadastrarUsuario.jsp</from-view-id>
		<navigation-case>
			<from-action>#{usuarioBean.salvarUsuario}</from-action>
			<from-outcome>sucesso</from-outcome>
			<to-view-id>/usuario/cadastroSucesso.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>

	<navigation-rule>
		<from-view-id>/usuario/cadastroSucesso.jsp</from-view-id>
		<navigation-case>
			<from-outcome>voltar</from-outcome>
			<to-view-id>/index.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>

vai postando os codigos aqui :smiley:

att
mauricio carvalho

A

Olha esse link aqui que ele te explica bem sobre a navegação no jsf 2

M

Então ainda utilizo o faces-config, achei que poderia mapear por anotation.

M

Que eu saiba ainda , a unica coisa que agora você pode mapear por annotations é os ManagedBeans :smiley:

J

no jsf2 tem 2 tipos de navegacao:

a implicita e a condicional.

na implicita (do jeito que tu usava no 1.2) existe duas maneiras de implementar.

uma é no faces-config igualmente como era no 1.2.

a outra é tendo no retorno do teu metodo a pagina para qual ele vai se redirecionar. assim, ele vai ir para a page2 pois voce definiu ela no retorno do metodo.

public String suaAcao() { return "page2"; }

uma nota: ele vai procurar por regras de navegacao primeiro antes de tentar procurar pela view (page2.xhtml).

da uma lida depois. isso foi uma das coisas mais simples do jsf2.

M

jadsonuch

Meu Deus voce ta de brincandeira que eu posso fazer isto?
Eu ODEIO regras de navegação , nada impossível mais não gosto da ideia de configuração intende!
e ele só redireciona para paginas XHTML se eu criar no flex por exemplo uma MXHTML , da para passar assim por retorno

public String suaAcao() { return "page2"; }

J

mausexdd:
jadsonuch

Meu Deus voce ta de brincandeira que eu posso fazer isto?
Eu ODEIO regras de navegação , nada impossível mais não gosto da ideia de configuração intende!
e ele só redireciona para paginas XHTML se eu criar no flex por exemplo uma MXHTML , da para passar assim por retorno

public String suaAcao() { return "page2"; }

sim. no jsf2 te permite isso.

ele vai procurar a regra PRIMEIRO no faces-config, não achando a regra “page2” ele vai procurar pela view “page2”.

agora, mausexdd isso eu preciso procurar para te responder corretamente, mas acredito que sim (mexendo em algumas config do faces servlet… so testando mesmo )

M

Legal , acabei de aprender algo realmente Util ! que vai me poupar muito tempo xD.

Criado 31 de agosto de 2011
Ultima resposta 1 de set. de 2011
Respostas 9
Participantes 4