Vraptor - trabalhando com url's dinamicas

7 respostas
R

Pessoal gostaria de saber se é possivel o seguinte cenario

/**
     * Apresenta a pagina de login (login.jsp) www.nomedosite/
     */
    @Publico @Get @Path("/")
    public void login(){     	   		
    	
    }
Acima esta o meu contexto inicial da aplicação, qdo é carregado me mostra minha pagina de login. No projeto tenho 5 layouts diferentes porem a estrutura das jsp's sao iguais. A principio estou definindo o css na mão atraves de um input hidden que fica na "jsp" de login;
<!--##### Elemento que ira definir o CSS a ser utilizado #####-->
 <input type="hidden" name="site" value='petrobras' id="styleType"/> <!-- aki eu seto o parametro -->
<!--##### ---------------------------------------------- #####-->
e nessa jsp tenho um javascript que lê esse parametro e me define o CSS a ser utilizado. Fiz um teste e funcionou;
/**
     * Apresenta a pagina de login (login.jsp) www.nomedosite/
     */
    @Publico @Get @Path("/petrobras")
    public void login(){         	
    	 //define o parametro do CSS na Sessao
       this.usuarioLogado.site("petrobras");  	    	
    }
Logo apos isso recupero esse parametro na jsp da seguinte forma;
<!--##### Elemento que ira definir o CSS a ser utilizado #####-->
   <input type="hidden" name="site" value='${usuarioLogado.site}' id="styleType"/>
<!--##### ---------------------------------------------- #####-->

e o javascript lê esse parametro e me define o CSS

Bom queria saber se é possivel fazer um if com o metodo que carrega minha pagina de login por exemplo;

/** 
* Apresenta a pagina de login (login.jsp) www.nomedosite/ 
*/ 

if(@Path == "petrobras")
@Publico @Get @Path("/petrobras")  
public void login(){              
     //define o parametro do CSS na Sessao  
   this.usuarioLogado.site("petrobras");              
}  

else if(@Path == "Esso")
@Publico @Get @Path("/Esso")  
public void login(){              
     //define o parametro do CSS na Sessao  
   this.usuarioLogado.site("Esso");              
}  

else if(@Path == "Ipiranga")
@Publico @Get @Path("/Ipiranga")  
public void login(){              
     //define o parametro do CSS na Sessao  
   this.usuarioLogado.site("Ipiranga");              
}

* é so um exemplo viu pessoal sei que isso não funciona mas acredito que pra mostrar minha intenção ira servir.

Se alguem puder me dar uma sugestão agradeço
Vlw pessoal

7 Respostas

david.cs20

Sim. Pq vc não joga esse valor em uma variável e compara ela ? E ai faz as condições !!!

R

O problema é que o Vraptor ate onde eu sei com essa anotação @Path ele pega o meu contextRoot concatena com o o defini nos =>("/sss").<=
Precisaria então antes dele concatenar o contexto inicial com o que defini, fazer esse if

Sua sugestão seria por exemplo

String pathname = //pega o parametro da url por exemplo??

@Publico @Get @Path("/"+pathname)  
public void login(){         

   if(pathname == "petrobras"){
     //define o parametro do CSS na Sessao  
   this.usuarioLogado.site("petrobras");  
   }            
}
david.cs20

Acho que vc esta fazendo confusão. vc tem que criar as condições e se ela for validade dentro dela vc pode redirecionar para a url que vc quer.
Na apostila da caelum mostra como usar o “redirectTo”.

DaniloAndrade

acho que assim funciona

@Path("/{pathName}/login)
@Get
public void login(String pathName){           
  
//vc recebendo por parametro, nem vai precisar mais do if
  // if("petrobras".equals(pathName)){  
     //define o parametro do CSS na Sessao    
      this.usuarioLogado.site(pathName);    
   //}              
}
R

Danilo, parabens cara era exatamente isso Vlw
Abs.

DaniloAndrade

por nada, uma mão lava a outra.
fico feliz em ajudar :lol:

edita seu primeiro post e coloca [RESOLVIDO] no assunto do post

R

Ok !! Obrigado

Criado 5 de setembro de 2012
Ultima resposta 10 de set. de 2012
Respostas 7
Participantes 3