Vraptor 3 Usando @Path

3 respostas
L

Caros, boa tarde.

Estou aqui tentando fazer o seguinte:

Utilizar o @Path para receber parâmetros em quantidade indefinida, não sei se isso é possível, mas seria +ou- assim:

Isto seria o normal

@Path("/categoria/{categoria}") public void categoria(String categoria){...}

O que eu queria fazer era algo como:

@Path("/categoria/{categoria}/{subcategoria}/{subcategoria}/..../..../..../...") public void categoria(String... categoria){...}

O problema é que meu sistema tem subcategorias ilimitadas, então eu não tenho como saber quantas categorias serão passadas, isto virá da URL tipo loja virtual /eletronicos/televisores/tvsled/ neste caso eu tenho 3 parametros, mas posso ter mais que três… a questão é como receber isso no metodo!

Obrigado.

3 Respostas

Lucas_Cavalcanti

o que vc pode fazer é isso:

@Path("/categoria/{categoria*}")
public void categoria(String categoria) {
    String categorias = categoria.split("/");
    //...
}
L

Opa, Lucas.

Dessa forma serviu sim, eu tinha visto este exemplo na documentation, mas não havia compreendido seu funcionamento, achei que não serviria pra mim, mas serviu sim. Valew

R

Valeu Lucas! Sua ajuda me abriu uma luz aqui!

fiz algumas alterações:

O JSP ficou assim:

function carregalinhasnovo(transp) {
		$('#combolinha').load('<c:url value="/logica/linha"/>?linha.transporteLinha='+transp);
	  
			
	}

O controller ficou assim:

public List<Linha> linha(Linha linha) throws Exception{
	EstacaoDAO estacaodao = new EstacaoDAO();

	
	return estacaodao.listaLinhaTransporte(linha.gettransporteLinha());

	
}



@Path("/logica/linha/{linha}")
public void linha() {

}

Mas a comida de bola também foi na estrutura de pastas…na raiz eu realmente não tinha jogado a pasta desse controller que fiz depois (logica)…
Ou seja, criei a pasta logica dentro de JSP e movi o linha.jsp pra lá (jsp que contem o forEach).

Agora funfou!
Abs e muito obrigado pela ajuda!
Ronnie

Criado 15 de março de 2011
Ultima resposta 25 de abr. de 2012
Respostas 3
Participantes 3