Bom dia Galera, sou usuário novo do GUJ porém leitor muito antigo…
Estou com uma dúvida que não estou conseguindo resolver…
Estou desenvolvendo uma aplicacao que carregará um perfil atraves de um parametro recebido na URL
Ex: www.minhaapp.com/PARAMETRO, estilo Twitter…
Pois bem, para isso anotei um método com @Path para receber o parametro no método e assim carregar o perfil e devolver para a jsp!
Perfeito funciona! Recebo o login do usuario e assim carrego o perfil retornando para a jsp default.
O meu problema encontra-se quando tento usar o tiles com a receita de bolo do site… configurei o tiles e funcionou perfeitamente também, porém só quando removo a anotacao @Path que recebe o parametro, se nao removo ao inves de procurar na definitions do tiles depois que executa o método ele recebe o name como parametro no mesmo método.
Se alguem puder me ajudar agradeco desde já.
Muito agradecido e parabéns pelo Vraptor nao tive duvida sobre a escolha do Framework.
Não sei se entendi muito bem o problema, já que a última frase está um pouco confusa.
Há uma ordem que deve ser respeitada, colocando o servlet do tiles sempre antes do vraptor. A impressão que tenho é que o vraptor está tentando processar as requisições do tiles.
Você pode nos deixar aqui como está seu controller?
por convenção o vrpator retorna a página para WEB-INF/jsp/pessoa/carregarPerfil.jsp
Ok!
Quando alteramos a convenção passando a retornar pacote.classe.metodo.tiles, no final da execução do método ele nao vai buscar no definitions ele acaba caindo no método carregarPerfil de novo e recebendo o valor de login = pacote.classe.metodo.tiles
porem o vraptor entende isso como parametro recebido e que deve ser tratado pelo metodo carregarLogin e nao para usar as configurações do tiles…
Ficou compreensível?
Obrigado
G
garcia-jj
O problema é que você usou /x, sendo que isso significa TUDO no vraptor. Ou seja, se você tentar acessar /meu-endereco-tiles ele irá cair no seu método.Tente fazer algo como @Path("/~{login}") para você ver como assim funciona. O problema de usar um wildcard assim como /* é que você pegará todos os acessos, inclusive os forwards para o JSP, já que o filter do vraptor é interceptado tanto via request como forward.
Você também pode tentar algo como @Path("/{login}/") com a barra no final.
R
rodrigo.lopes
Cara qual a finalidade do @Path("/~{login}")? assim nao entre por nada no método…
e quanto ao @Path("/{login}/") meu usuário teria que colocar a barra no final?
Lucas foi neste tutorial que eu me basiei, e funciona perfeitamente se eu nao tivesse metodos com @Path recebendo parametros…
Eu nao entendi sua explicação…
deveria mudar meu Path TilesPathResolver para retornar /tiles/pacote.classe.metodo.tiles
e este ser o nome da definition?
Lucas_Cavalcanti
isso, tudo o que for do tiles vai começar com /tiles
G
garcia-jj
rodrigo.lopes, o problema que usando o path @Path("/{login}") o vraptor irá pegar TODAS as requisições. Note que conforme você falou o endereço do forward para o tiles é www.minhaapp.com/pacote.classe.metodo.tiles,sendo assim ele irá entrar de novo no seu @Path("/{login}"), pois a expressão atende ao /pacote.classe.metodo.tiles.
Entendeu?
G
garcia-jj
Não vai funcionar, pois /tiles também atende ao @Path("/{login}").
Aliás se pensarmos bem, isso nem deveria ser permitido, pois /expressão captura TODAS requisições sem distinção alguma.
R
rodrigo.lopes
Isso que o Lucas falou eu ja testei tb, nao funciona…