| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/11/2009 16:10:18
|
thiefofwisdom
JavaBaby
Membro desde: 03/09/2009 14:39:44
Mensagens: 99
Localização: Sao Paulo
Offline
|
Olá pessoal!
Estou tendo uma duvida com o Validator do VRaptor, seguindo a apostila da Caelum.
Apliquei as validation tags nas entities :
Agora preciso implementar isso na logic, correto?
Com oque tinha na apostila, nao consegui...
Coloquei assim :
e tomei essa exception na cara :
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: java.lang.NullPointerException
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:99)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.NullPointerException
org.vraptor.plugin.hibernate.HibernateLogicMethod.validateObject(HibernateLogicMethod.java:120)
org.vraptor.plugin.hibernate.HibernateLogicMethod.validateField(HibernateLogicMethod.java:82)
org.vraptor.plugin.hibernate.HibernateLogicMethod.validate(HibernateLogicMethod.java:57)
org.vraptor.core.ValidatorEngine.validate(ValidatorEngine.java:35)
org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:101)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:41)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:5
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
lojavirtual.store.DAOInterceptor.intercept(DAOInterceptor.java:17)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:3
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:9
org.vraptor.core.DefaultController.execute(DefaultController.java:46)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Alguem sabe o que pode estar acontecendo? O que posso ter esquecido?
Nota, estou usando o VRpator 2.5 e o HIbernate Validator 3.0
Thanks
|
_______THIEF_______ |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/11/2009 21:02:36
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6394
Offline
|
Olá,
você está passando algum parâmetro para a requisição, do tipo cd.titulo=Abc, cd.id=2, e coisas do tipo?
já deu uma olhada no VRaptor 3? http://vraptor.caelum.com.br/documentacao/
[]'s
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/11/2009 18:10:50
|
thiefofwisdom
JavaBaby
Membro desde: 03/09/2009 14:39:44
Mensagens: 99
Localização: Sao Paulo
Offline
|
Opa... vlw pela atenção...
Entao.. eu estou fazendo um trabalho de faculdade co urgencia me baseado nisso, porisso q estou seguindo a risca e nao quis mudar pro VRptor 3.... nem o os validators do hibernate...
O pessoal que pega ess aapostila q é iniciante q nem eu dev eter muita dificuldade, pq se vai buscar na net os jars, pega tudo atualizado. E dai vai dar um monte de erro.
Eu apaguei tudo oq eu tinha feito de validations com o hibernate e VRaptor e refiz.. dai deu certo.. devia ter escritoo algo errado. Quando terminar o projeto eu vou postar ele auqi no forum pra galera ter um pronto ja pra se basera e vou tentar deixar todas as coisas q eu tive dificuldade e que me fiseram perder mt tempo...
Estou agora com outra duvida no mesmo projeto. A duvida é a seguinte :
Qaundo sou lançado da tela de cadastramento de algum produto para a tela que lista os produtos, se dou um refresh na pagina (f5), ele adiciona outro produto identico..
Imagino que em algum lugar eu devia estar zerando alguma coisa... e nao estou. Engraçado q eu nao vi nada na apostila...
Alguem sabe isso?
Abraços!
This message was edited 1 time. Last update was at 18/11/2009 18:11:45
|
_______THIEF_______ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/11/2009 19:18:34
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6394
Offline
|
Olá,
esse problema do F5 acontece por causa de uma diferença entre redirect no cliente e redirect no servidor...
dá uma olhada nessa página: http://vraptor.caelum.com.br/documentacao/view-e-ajax/ na seção Redirecionamento e Forward
pra resolver esse problema no VRaptor2, você precisa ir na linha do views.properties que redireciona do adiciona.ok para a listagem,
e colocar um "redirect:" na frente:
ou algo parecido com isso
[]'s
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/11/2009 23:27:30
|
thiefofwisdom
JavaBaby
Membro desde: 03/09/2009 14:39:44
Mensagens: 99
Localização: Sao Paulo
Offline
|
Blza cara... deu certissimo... esse era o pior bug q tava dando no meu sisteminha...
Ow... c sabe como eu faço pra setar um boolean pelo form usando um checkbox sem usar javascript?
Na verdade nem com javascript eu consegui...
Fiquei em duvida tbem se na entity eu deveria colocar esse boolean como objeto ou primitivo...
Achei q se o user nao clicasse na check box ele ia setar com false... e se clicasse como true...
A parte do true funfa..mas se nao dar um check, fica como null a propriedade...
Pensei em colocar como primitivo, q ja vem com o valor false como padrao, mas ai o vraptor tenta jogar null no primitivo, oq logicamente da uma exception na minha cara..
Obrigado mais uma vez pela ajuda.... c trampa na caelum?
|
_______THIEF_______ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/11/2009 23:47:43
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6394
Offline
|
olá,
o problema com checkboxes eh que qdo eles estão checados eles vão pra requisição, e quando não estão checados eles não vao pra requisição.
vc tá recebendo o boolean como argumento do método, ou dentro de outro objeto?
se for como argumento do método, você pode receber o Boolean e se estiver null vc toma o valor como falso...
se for dentro de outro objeto, vc pode usar boolean, pois se o parâmetro não vier na requisição (checkbox não checado) o vraptor não vai tocar no campo boolean e ele vai ficar falso...
e sim, eu sou da caelum =)
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/11/2009 00:27:49
|
thiefofwisdom
JavaBaby
Membro desde: 03/09/2009 14:39:44
Mensagens: 99
Localização: Sao Paulo
Offline
|
entao veio... o esquema ta dentro do objeto...
Tenho um objeto produto e tem dentro dele um boolean "promocional"...
quando eu tentei deixar como boolean, nao rolou.. deu a exception q eu te falei, sacou...
oq eu posso fazer é colocar logica dentro do codigo pra setar isso quando tiver null... mas achei q seria meio gambiarra... queria fazer o esquema que vc falou ai funcionar...
c tem ctza q se for primitivo e tiver dentro do objeto produto, o vraptor nao reclama? pq peloq eu to vendo, mesmo se nao tiver clicado, ele tenta jogar null no atributo promocional...
Legal.. ja fiz um curso de java preparatorio pra certificacao ai... passei! lol
|
_______THIEF_______ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/11/2009 00:28:28
|
thiefofwisdom
JavaBaby
Membro desde: 03/09/2009 14:39:44
Mensagens: 99
Localização: Sao Paulo
Offline
|
affe.. mandei duas vezes a msg......
This message was edited 1 time. Last update was at 21/11/2009 00:29:59
|
_______THIEF_______ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/11/2009 00:36:03
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6394
Offline
|
o Vraptor não vai tentar setar null, pq o parâmetro nem vai pra requisição... o vraptor só mexe nos parametros que vem da requisição...
parabéns pela certificação =)
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/11/2009 00:42:53
|
thiefofwisdom
JavaBaby
Membro desde: 03/09/2009 14:39:44
Mensagens: 99
Localização: Sao Paulo
Offline
|
Uai... q doidera... to fazendo alguma outra coisa errada entao.. olha como ta meu jsp :
e se liga na exception.... mesmo se eu setar com true.... da erro dos dois jeitos
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Null value was assigned to a property of primitive type setter of lojavirtual.bean.Product.promotional
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:95)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of lojavirtual.bean.Product.promotional
org.hibernate.property.DirectPropertyAccessor$DirectSetter.set(DirectPropertyAccessor.java:83)
org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:337)
org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:200)
org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3571)
org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:133)
org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:854)
org.hibernate.loader.Loader.doQuery(Loader.java:729)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
org.hibernate.loader.Loader.doList(Loader.java:2213)
(...)
root cause
java.lang.IllegalArgumentException: Can not set boolean field lojavirtual.bean.Product.promotional to null value
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
sun.reflect.UnsafeBooleanFieldAccessorImpl.set(Unknown Source)
java.lang.reflect.Field.set(Unknown Source)
org.hibernate.property.DirectPropertyAccessor$DirectSetter.set(DirectPropertyAccessor.java:79)
org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:337)
org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:200)
org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3571)
org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:133)
org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:854)
org.hibernate.loader.Loader.doQuery(Loader.java:729)
(...)
|
_______THIEF_______ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/11/2009 01:04:17
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6394
Offline
|
então...
o atributo value do checkbox é o que vai pra requisição, o que vc quis fazer é isso:
ou seja, o chk vai estar checado se ${product.promotional} for true...
o que estava acontecendo, eh que o HTML gerado era:
então quando vc checava o chk ele mandava pra requisição
que o vraptor traduz como null e dá pau...
e se eu não me engano vc não precisa colocar o value="true", isso é o padrão de um chkbox
[]'s
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/11/2009 01:32:11
|
thiefofwisdom
JavaBaby
Membro desde: 03/09/2009 14:39:44
Mensagens: 99
Localização: Sao Paulo
Offline
|
Blza.. vou testar.,..
ow... eu to tentando setar um Double e ta dando erro de cast... `
Nov 21, 2009 1:31:09 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet vraptor2 threw exception
java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String
at org.hibernate.validator.NotEmptyValidator.isValid(NotEmptyValidator.java:36)
at org.hibernate.validator.ClassValidator.getInvalidValues(ClassValidator.java:385)
at org.hibernate.validator.ClassValidator.getInvalidValues(ClassValidator.java:351)
Onde no VRaptor eu vejo como ele ta setando? Ele ja nao tenta fazer a conversao automatica?
|
_______THIEF_______ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/11/2009 12:29:46
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6394
Offline
|
você não pode colocar @NotEmpty num campo Double, só vale para strings (e collections, talvez)...
troque por @NotNull
[]'s
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/11/2009 12:38:24
|
thiefofwisdom
JavaBaby
Membro desde: 03/09/2009 14:39:44
Mensagens: 99
Localização: Sao Paulo
Offline
|
HAUHAUAHUAHAUHA
porra... q noob!
logico... not empty é pra nao ser nem nulo e nem vazio... drrrrrrrrrrrrrrr
vlws cara...
cara... vi isso aqui na apostila e acho q ta errado... se liga :
Esse "-" entre musica e musica.id existe??? (id="musica-${musica.id}"> pq ele ta pegando o meu id e colocando um - na frente... pegando id negativo...
|
_______THIEF_______ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/11/2009 12:43:57
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6394
Offline
|
acho que tá certo sim...
é pro id do li ficar algo do tipo
musica-45
musica-229
etc...
é só um separador =)
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
|
|