[Resolvido] Como redirecionar pegando a URL do navegador com Vraptor

6 respostas Resolvido
vraptor
well

Boa tarde pessoal, tenho a seguinte dúvida, como faço para redirecionar pegando a URL do navegador com vraptor, tenho uma pagina que seleciono um produto e vou colocando suas variações numa sessao, exemplo, short esportivo, cor azul, short esportivo, cor preto, e quando adiciono é voltar para mesma pagina, sendo nesse formato http://localhost:8080/vraptor-produtos/produto/montarGrade?produto.id=1

passando o id do produto para continuar adicionando o mesmo produto!

meu método ta assim, mais não sei como pegar a mesma URL

@Post
@Path("/grade")
public void adicionaNaSession(Item item){
dao.recarrega(item.getProduto());
corDao.recarrega(item.getCor());
medidaDao.recarrega(item.getMedida());
grade.adicionaItem(item);

result.include("produtoDao", dao.lista());
	result.include("corDao", corDao.lista());
	result.include("medidaDao", medidaDao.lista());
}

6 Respostas

aix

Redireciona para o método que monta a grade, se o método está no mesmo controller que você adiciona os itens redirectTo(this).metodo caso esteja em outro controller redirectTo(OutroController).metodo, ex:

result.redirectTo(this).list(item);

well

Se eu fizer isso, o produto que foi selecionado sai da exibição, pode ver que ele é exibido através da url http://localhost:8080/vraptor-produtos/produto/montarGrade?produto.id=1 que pega o id do produto para exibi-lo, fazendo esse redirect tenho que selecionar novamente o produto!

aix

Manda o produto de volta para a tela manu, ou lá na view pega ele da session ja que vc está armazenando na sessão, lembra que no vraptor você pode fazer assim:

@Get({ "/item/{id}", "/item/List" })
public void list(Item item) {
    if (item != null) {
        result.include("item", itemService.find(item));
    }
    result.include("items", itemService.findAll());
}

É só uma idéia, já havaliou ir capturando com JS ou um Jquery e depois fazer um ajax para o server?

well
Solucao aceita

Boa noite, segui seu raciocínio, mais fiz diferente, primeiro fiz um redirect para

result.redirectTo(request.getHeader("Host")); Porém ficava na mesma pagina mais não atualizava, eu tinha de usar o F5, depois peguei o id da sessão do objeto que eu estava adicionando ficou um luxo, tenho que melhorar a formatação mais ta funcional! @Post @Path("/grade") public void adicionaNaSession(Item item){
dao.recarrega(item.getProduto());
	corDao.recarrega(item.getCor());
	medidaDao.recarrega(item.getMedida());
	grade.adicionaItem(item);
	
	result.include("produtoDao", dao.lista());
	result.include("corDao", corDao.lista());
	result.include("medidaDao", medidaDao.lista());
	
	result.redirectTo("http://localhost:8080/vraptor-produtos/produto/montarGrade?produto.id="+item.getProduto().getId());
	//result.redirectTo(request.getHeader("Host"));
	
}

Valeu obrigado pela ajuda!

aix

hummm entendi, que bom que resolveu manu, deculpa não ajudar melhor, mas não tinha uma visão clara do seu controller menos ainda da view, só não curti essa url chumbada no fonte :slight_smile:

Na verdade eu imaginava que você iria redirecionar para outro controller passando o objeto como parâmetro ou para outro método do mesmo controller,

well

Essa url feiosa vou ajeitar, ta feia mesmo! :slight_smile: Obrigado pelas sugestões, foi através delas que pensei para resolver!

Criado 26 de maio de 2017
Ultima resposta 28 de mai. de 2017
Respostas 6
Participantes 2