JSF - Navegation rule

Olá pessoal.
Estou começando a utilizar JSF e gostaria de um help com este problema…
Quando clico no botão ou no link para acionar a px pagina continua na msm pagina index.jsp.
O que estou fazendo de errado?

Abaixo o trecho da pagina e o xml. Obrigado!!

index.jsp:

<h:commandButton action=“Login” value="#{msg.login}"></h:commandButton>
<h:commandLink value=“Acessar” action=“Login” immediate=“true”/>

faces-config.xml:

index.jsp index.jsp Login welcome.jsp

Olá favisan acho que posso ajudar:
Do modo que eu uso JSF eu faço assim:

O atributo action do seu commandButton deve apontar para um método do seu bean. O atributo value é simplesmente o que vai aparecer na tela.
Então crie no seu bean um método que retorne uma String como “login” por exemplo.
Aih seu commandButton vai ficar assim:

<h:commandButton action="#{msg.logar}" value="Logar"></h:commandButton> 

Quando o usuário clicar no botão ele vai chamar o método referenciado no action, então esse método vai retornar uma String, “login”.

Assim ele vai procurar essa String “login” no faces-config, entao agora vc precisa criar o navigation-rule para essa string “login”:

   <navigation-rule>
     <from-view-id>/index.jsp</from-view-id>
     <navigation-case>
        <from-outcome>login</from-outcome>
        <to-view-id>/cadastro.jsp </to-view-id>>
     </navigation-case>
 </navigation-rule>

Acredito que assim vá funcionar.
Att

os botões estão dentro de algum form??

Olá fredabcdef! Obrigado pela resposta.

Entendi a maneira que você faz, a forma que estava utilizando era a mesma. Só não estava criando o metodo no meu bean e sim passando direto na action com o nome “Login”. Acredito que dá no mesmo.
De qualquer forma fiz da maneira que disse e não funcionou.

Bruno, o botão e o link esta dentro de um form sim.
Segue abaixo o index.jsp completo:

Vlwww!!

<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>

<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f”%>
<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h”%>

Login JSF

Sem problemas… vamos tentar resolver:

O action do seu commandButton e do seu commandLink nao devem ser o get da variavel.

<h:commandButton value=“cadastrar” action="#{controleUsuario.proximaPagina}" />

tem que ser assim, o action é um método do seu managed-bean, que iá retornar uma String.
essa String vai estar no navigation-rule. Vou montar um exemplo aqui e mando daqui a pouco.

O JSP fica assim:

<h:commandButton value="cadastrar" action="#{msg.proxPagina}" />

ok, agora no seu managed-bean que você deu o nome de msg você precisa ter o método proxPagina, assim:

	public String proxPagina(){
		return "principal";
	}

Esse método retorna uma string, nesse caso “principal”

ok, Agora temos que criar a navigation-rule para “principal”

   <navigation-rule>
     <from-view-id>*</from-view-id>
     <navigation-case>
        <from-outcome>principal</from-outcome>
        <to-view-id>/welcome.jsp </to-view-id>>
     </navigation-case>
 </navigation-rule>

pronto… quando clicar no command button ele vai engtrar no acttion dele, portanto vai entrar no método proxPagina() que criamos…
A única coisa que esse método faz é retornar uma string, no caso “principal”. O que ele faz agora eh procurar no fces-config um navigation-rule
com o nome “principal”.

        <from-outcome>principal</from-outcome> 

Nós criamos esse navigation-rule , então ele vai redirecionar para a página que o navigation-rule mandar:

        <to-view-id>/welcome.jsp </to-view-id>>

vc clica no botão e não muda de página?!?!??

tente revisar todo o faces-config.

Segue abaixo o motivo de não executar a px pagina:

Quando criei o navigation-rule (visualmente pelo eclipse) ele criou as linhas abaixo no meu faces-config.xml:

<navigation-rule>
	<from-view-id>index.jsp</from-view-id>
	<navigation-case>
		<from-outcome>login</from-outcome>
		<to-view-id>/welcome.jsp</to-view-id>
	</navigation-case>
</navigation-rule>

Retirei a linha: index.jsp pois percebi que o link estava direcionando para mesma pagina index.jsp e funcionou. Provavelmente devo ter parametrizado algo errado ao criá-lo.

Entendo que a tag from-view-id é para identificar a pagina de origem. Pq não funciona quando incluo a mesma na regra?

Obrigado pela ajuda de todos!!

vlw