[RESOLVIDO] p:datatable - Redirecionar pagina após selecionar uma linha

8 respostas
C

Pessoal, preciso de uma ajuda.

Implementei um p:datatable e nele tenho um p:ajax que ao clicar em uma linha, para selecioná-la (event=“rowSelect”), chama um método no bean, Até ai beleza, tudo funcionando de boas.

Porém, ao entrar neste método, tenho que processar algumas informações e posteriormente redirecionar para uma ´página de edição (outra .xhtml). Veja bem, não é um botão que chama a ação e sim um evento ajax.

Tentei fazer mas não estou conseguindo…

segue trecho dos códigos:

chamada p:ajax dentro da table

<p:ajax event="rowSelect" listener="#{alterarUsuarioController.habilitaEdicaoSelecionado}" />

Método dentro do bean:

public String habilitaEdicaoSelecionado(SelectEvent event) {
		setDesabilitaAbaEdicao(false);
		
		usuarioSelecionado = ((Usuario) event.getObject());  
		
		System.out.println("usuario selecionado: " + usuarioSelecionado);

		//Trata regras...

		return redirectEditUsuario();
		
	}

Método que redireciona:

public String redirectEditUsuario() {

		setIndiceMenu("1");
		pagina = "Edit_user";
		return pagina;
	}

Alguém tem alguma idéia de como posso fazer?

Abs

8 Respostas

H

Se o método é ajax não adianta retornar uma String. Uma navegação normal não vai funcionar.

Você vai ter que usar o httpSession.sendRedirect().

E quando você utilizar esse método, tudo do request original será apagado. ^^

Você precisará de salvar o objeto ou na sessão ou no flash scope.

Leia aqui para entender mais sobre isso: JSF Mini Livro - Dicas, conceitos e boas práticas.

J

Pelo que vi, sua página não vai variar, direcionando sempre para ‘Edit user’.

Já tentou colocar no oncomplete do <p:ajax> o seguinte ?

self.location= 'edituser.xhtml';"
A

Usa faces-redirect:

public String redirectEditUsuario() {  
        setIndiceMenu("1");
        return "Edit_user?faces-redirect=true";  
}
A

jakefrog:
Se o método é ajax não adianta retornar uma String. Uma navegação normal não vai funcionar.
Você vai ter que usar o httpSession.sendRedirect().
E quando você utilizar esse método, tudo do request original será apagado. ^^
Você precisará de salvar o objeto ou na sessão ou no flash scope.
Leia aqui para entender mais sobre isso: JSF Mini Livro - Dicas, conceitos e boas práticas.

desculpa invadir o espaço com um assunto nada a ver com o tópico, mas cara tenho acompanhado muito seu blog e gostaria de te dar parabéns!!!, estou terminando de desenvolver o meu, vou publicar na openshift e assim como você também irei postar artigos, soluções, projetos e o que passo no dia a dia como desenvolvedor, agradeço por compartilhar sua experiência muitas vezes ja me salvou, abraços.

C

Jakefrog, muito obrigado pela indicação.

Pode ter certeza que mais tarde lerei ele com o maior prazer.

Parabéns

Abs

H

aix:
jakefrog:
Se o método é ajax não adianta retornar uma String. Uma navegação normal não vai funcionar.
Você vai ter que usar o httpSession.sendRedirect().
E quando você utilizar esse método, tudo do request original será apagado. ^^
Você precisará de salvar o objeto ou na sessão ou no flash scope.
Leia aqui para entender mais sobre isso: JSF Mini Livro - Dicas, conceitos e boas práticas.

desculpa invadir o espaço com um assunto nada a ver com o tópico, mas cara tenho acompanhado muito seu blog e gostaria de te dar parabéns!!!, estou terminando de desenvolver o meu, vou publicar na openshift e assim como você também irei postar artigos, soluções, projetos e o que passo no dia a dia como desenvolvedor, agradeço por compartilhar sua experiência muitas vezes ja me salvou, abraços.

Opa! Valeu! :oops: :oops:
É sempre bom ajudar quando possível, e fico feliz por saber que você também irá compartilhar o conhecimento! =D

C

ayslanms,

o faces=redirect não deu certo não…valew

C

jeanmalvessi,

deu certo com o oncomplete.

Obrigado a todos.;

Criado 18 de setembro de 2012
Ultima resposta 18 de set. de 2012
Respostas 8
Participantes 5