| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 16:53:17
|
a.moraissoares
JavaChild
![[Avatar]](/images/avatar/811f58cb176866007ea5c6930f233266.jpg)
Membro desde: 07/04/2009 12:53:08
Mensagens: 113
Offline
|
Pessoal boa tarde.
Inclui o VRaptor em minha aplicação em andamento.
Tenho uma tela que fazia o upload de um arquivo .xls, o lia e o inseria no banco.
Porém como passei a usar o VRaptor, no meu servlet responsável pelo upload, é passado o objeto VRaptorRequest, no lugar do HttpServletRequest.
aqui no request e response, chegam VRaptorRequest e response, ao invés do tradicional.
Acontece que está dando um erro por isso, já testei sem o VRaptor e tudo funfou direitinho.
A pergunta é: como deixar de usar o VRaptorRequest nesse momento em que preciso do HttpServletRequest?
Já tente um Cast e não deu certo.
obrigado
This message was edited 1 time. Last update was at 23/02/2010 16:55:47
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 17:00:46
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
Antes de mais nada o ideal é que você nos diga o erro que dá, logs, etc...
Não conheço a classe VraptorRequest, isso é do 2.6? No 3 se não me engano é MutableRequest (preciso pesquisar melhor, mas creio que seja isso). Mas você precisa mesmo usar esse componente ou pode usar o componente para upload do vraptor? Ele não te satisfaz?
Para usá-lo basta fazer seu método receber UploadedFile como parametro e só... o resto o vraptor faz por você.
Abraços
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 17:15:49
|
a.moraissoares
JavaChild
![[Avatar]](/images/avatar/811f58cb176866007ea5c6930f233266.jpg)
Membro desde: 07/04/2009 12:53:08
Mensagens: 113
Offline
|
Opa.
Estou usando o VRaptor 3.0 e é isso mesmo que chega como request, um VRaptorRequest.
Bom, eu como não entendo muito, e minha lógica da aplicação estava tudo pronta, queria manter o que já estava.(maldita hora que resolvi mudar um projeto em andamento)
Pois bem, nao estou desanimando, mas como a lógica está pronta queria usar o HttpServletRequest, e não o VRaptorRequest. Ou seja, queria sobrescrever, alterar, eliminar, ou fazer o que seja pra que meu objeto seja o nativo do meu servlet?
aqui vai como estou fazendo no momento
o único erro que dá é esse:
Pois quando ele tenta pegar ele está vazio
Pois bem, só não queria ter q mudar isso tudo que já está prontinho, e redondinho =)
agradeço as ajudas =D
This message was edited 2 times. Last update was at 22/02/2010 17:19:43
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 17:22:22
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
Você não precisa de tudo isso não. Ao invés dessas 18 linhas de código basta você fazer:
Aqui em outro thread sobre isso: http://www.guj.com.br/posts/list/15/145804.java
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 17:35:49
|
a.moraissoares
JavaChild
![[Avatar]](/images/avatar/811f58cb176866007ea5c6930f233266.jpg)
Membro desde: 07/04/2009 12:53:08
Mensagens: 113
Offline
|
Agradeço a ajuda, mas insisto em uma coisa.
Tem como eu usar o HttpServletRequest ao invés do VRaptorRequest?
Caso não tenha como, quem vai me passar esse UploadedFile arquivo ?
Pois no caso que estou usando, ele está no request, e pego ele aqui ó:
Da forma que estou fazendo, está claro pra mim. Gostaria de manter isso se possível.
Só não entendi bem como vai funcionar o upload pelo VRaptor, lembrando que uso um multipart-form pra pegar o caminho do arquivo, e no proprio servlet ele já trata tudo pra mim.
Obrigado =]
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 17:56:16
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
a.moraissoares, request na verdade não existe. HttpServletRequest é uma interface onde normalmente o container que implementa isso. O que o vraptor faz é criar apenas uma wrapper para o request, sendo que no fundo você tem todas as mesmas funcionalidades que você teria com o request normal.
Talvez o Lucas saiba de alguma coisa, ou talvez possa haver um bug mesmo.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 17:59:55
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6394
Offline
|
Antes de mais nada, HttpServletRequest é uma interface, não tem como passar "só ela". VRaptorRequest é uma classe que implementa essa interface...
Se quiser saber como funciona upload no vraptor, veja: http://vraptor.caelum.com.br/documentacao/downloading/
esse UploadedFile é criado pelo vraptor, a partir de um formulário de upload...
se seu <input type="file"> tiver name="meuArquivo", vc vai receber na sua lógica:
e para usá-lo siga os exemplos da documentação que eu te mandei
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 18:43:08
|
a.moraissoares
JavaChild
![[Avatar]](/images/avatar/811f58cb176866007ea5c6930f233266.jpg)
Membro desde: 07/04/2009 12:53:08
Mensagens: 113
Offline
|
Ok. Resolvido da forma que me sugeriram.
A pergunta que fica, e que não entendi ainda.
NÃO TEM COMO eu abortar o uso do VRaptorRequest e utilizar o HttpServletRequest ?
Digamos que eu precise disso de forma urgente, sem tempo pra modificar o código. Como eu faria? Obrigado pelas sugestões, e aguardo essa resposta pra botar no topico [RESOLVIDO]
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 19:13:54
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
Não existe. É como falamos acima, HttpServletRequest não existe sozinha, tem que haver uma implementação por baixo, e no caso do vraptor a implementação é a VraptorRequest (eu achava que era MutableRequest).
O ideal, já que você insiste muito em usar sua implementação manual via request, é tentar fazer um debug e investigar porque está acontecendo esse erro.
Abraços
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 19:19:23
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6394
Offline
|
vc, em geral, não vai precisar pegar a implementação "padrão" do HttpServletRequest, pois o VraptorRequest só é um wrapper: ele sempre chama os métodos da implementação padrão...
o que aconteceu no upload é q o vraptor já processa o Multipart request antes de ir pra sua lógica... e qdo vc tenta processar de novo já não tem nada mais pra processar, por isso o null pointer...
só pra concluir: não faz diferença nenhuma usar o VRaptorRequest ou o request que ele tá fazendo o wrapping...
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2010 01:43:33
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
Lucas Cavalcanti wrote:o que aconteceu no upload é q o vraptor já processa o Multipart request antes de ir pra sua lógica... e qdo vc tenta processar de novo já não tem nada mais pra processar, por isso o null pointer...
Será que não é interessante colocar isso com observação na documentação referente a upload?
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2010 09:10:48
|
a.moraissoares
JavaChild
![[Avatar]](/images/avatar/811f58cb176866007ea5c6930f233266.jpg)
Membro desde: 07/04/2009 12:53:08
Mensagens: 113
Offline
|
Então mesmo eu não "pedindo" o VRaptor já estava tratando os dados quando chegavam no meu servlet, certo?
Logo é impossível tratar da forma que eu tratava, utilizando FileItem, certo?
Se o que entendi está certo, logo o post foi resolvido.
Agradeço pela explanação.
Obrigado
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2010 11:59:09
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6394
Offline
|
a.moraissoares wrote:Então mesmo eu não "pedindo" o VRaptor já estava tratando os dados quando chegavam no meu servlet, certo?
Logo é impossível tratar da forma que eu tratava, utilizando FileItem, certo?
O VRaptor faz isso e muitas outras coisas sem vc pedir. É pra isso que um framework serve, pra fazer todo o trabalho sujo e facilitar o seu trabalho...
se vc ainda assim prefere usar o FileItem ao invés de um UploadedFile, dá pra desabilitar o MultipartInterceptor, que é o componente que processa a requisição
Multipart.
crie uma classe igual a essa: http://github.com/caelum/vraptor/blob/master/vraptor-core/src/main/java/br/com/caelum/vraptor/core/DefaultRequestExecution.java
só que com um nome diferente, e no pacote da sua aplicação...
anote a classe com @Component
remova a linha que adiciona o MultipartInterceptor
e seja feliz tratando requisições na mão
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2010 16:55:32
|
a.moraissoares
JavaChild
![[Avatar]](/images/avatar/811f58cb176866007ea5c6930f233266.jpg)
Membro desde: 07/04/2009 12:53:08
Mensagens: 113
Offline
|
Perfeito. Não que eu vá fazer essa loucura, uma vez que consegui fazer com o VRaptor.
A pergunta acho que procede, uma vez que tive que fazer algumas boas alterações no meu projeto, que me custaram umas 2h de trabalho.
Imagina um projeto beeeem maior, em que estejam loucamente adaptando um framework no meio do projeto, e queiram usar do método "antigo". Aqui vai uma boa explicação
RESOLVIDO e muito obrigado
|
|
|
 |
|
|