@ViewScoped
@ManagedBean(name="aMb")
public class EntradaController
{
private Collection<Perfil> listaPerfil;
private Perfil perfil;
private Long perfilSelecionado;
private Usuario usuario = new Usuario();
//Getter e Setter ocultos
public String teste()
{
System.out.println("usuario: " + usuario.getLogin()); //passa por aqui e imprime no console
System.out.println("senha: " + usuario.getSenha()); //passa por aqui e imprime no console
return "principal.xhtml"; //aqui nao redireciona
}
}
o problema está no botão, que ao clicar…não consegue redirecionar para outra view (a view principal).
Para redirecionar sua página posso te indicar 2 alternativas:
A primeira seria criar um no seu faces-config.xml, porém eu não sei ao certo como fazer até pq o meu não ta funcionando. Mas eu sei que ele funciona mais ou menos da seguinte forma:
primeiro vc cria um método que retorna uma string de acordo com o resultado esperado, exemplo:
//método para chamar a página de edição de clientes após clicar no commandButtom de editar
public String editar(){
this.setCliente(clienteSelecionado);
if(clienteSelecionado != null)
return "sucesso";
else
return "erro";
}
depois vc cria no faces-config.xml do seu projeto uma que funciona da seguinte forma:
<navigation-rule> <!-- regra de navegação -->
<from-view-id>/paginas/pesquisarCliente.xhtml</from-view-id> <!-- página atual -->
<navigation-case> <!-- situação de navegação -->
<from-action>#{clienteMB.editar}</from-action> <!-- nomeManageBean.método que retorna a msg -->
<from-outcome>sucesso</from-outcome> <!-- menssagem de retorno -->
<to-view-id>/paginas/editarCliente.xhtml</to-view-id> <!-- página que ele deve redirecionar -->
</navigation-case> <!-- fim da situação de naveção -->
<navigation-case>
<from-action>#{clienteMB.editar}</from-action>
<from-outcome>erro</from-outcome>
<to-view-id>/paginas/pesquisarCliente.xhtml</to-view-id>
</navigation-case>
</navigation-rule> <!-- fim da regra de naveção -->
PS.:eu devo estar esquecendo algum passo neste processo pq no meu projeto o redirecionamento pelo faces-config.xml não funciona! Se alguem souber me diz por favor!
A outra maneira essa eu sei que funciona pq eu estou usando ela, apesar de não saber se é uma boa prática, ela me “soa” como um pog é o redirecionamento manual, colocando no return do seu método a seguinte expressão:
<p:commandButton value="Acessar" action="#{aMb.teste}" update="messages" ajax="false"></p:commandButton>
Ou seja faça a chamada por action (e não actionlistener) e configure atributo ajax como false;
e la na saida do seu método chamador não coloque a extensão .xhtml:
public String teste()
{
System.out.println("usuario: " + usuario.getLogin()); //passa por aqui e imprime no console
System.out.println("senha: " + usuario.getSenha()); //passa por aqui e imprime no console
return "principal"; //aqui nao redireciona
}
Se não precisa passar pelo método, ou seja, queira apenas abrir a página principal, pode simplesmente fazer isso: