Lucas Cavalcanti:
se você usar o .recursive() (sem os includes) funciona?
o problema é que se o tipo é genérico, o some em tempo de execução, daí o vraptor não consegue navegar pelos atributos
Com recursive funciona, mas o problema é que da CircularReferenceException, porque o atributo “elementos” é uma lista de Pessoa e o atributo “elementos.familia.membrosFamilia” também é uma lista de Pessoa.
Para resolver o problema eu tenho que excluir um atributo como abaixo:
Preciso excluir esse atributo:
result.use(json()).from(pagerPessoa)
.recursive()
.exclude("elementos.familia.membrosFamilia")
Mas ai se eu dar um exclude como acima, acontece esse exception :
Caused by: java.lang.NullPointerException
at br.com.caelum.vraptor.serialization.xstream.XStreamSerializer.getParentType(XStreamSerializer.java:116)
at br.com.caelum.vraptor.serialization.xstream.XStreamSerializer.getParentTypesFor(XStreamSerializer.java:103)
at br.com.caelum.vraptor.serialization.xstream.XStreamSerializer.exclude(XStreamSerializer.java:87)
at com.icelula.controller.ExtjsPaginasController.extjsJSON(ExtjsPaginasController.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)
Lembrando que não é nada com meu atributo membrosFamilia, porque esse mesmo codigo funciona direitinho sem o Generics, mas eu não posso sair criando uma Classe Pager pra cada vez que eu precisar no meu sistema, que no meu caso são muitos.
Como excluir esse atributo da serialização usando o Generics ?