garcia-jj 23 de dez. de 2009
potato.rox, é complicado explicar algo que já está muito bem explicado na documentação. O que você não entendeu na verdade? Quais as dificuldades? Que parte exatamente você não entendeu?
Não há muito segredo em fazer json no vraptor3. Basta você fazer algo ± assim:
public void doJson() {
User user = new User();
user.setId(10);
user.setName("garcia-jj");
result.use(Results.json()).from(user).serialize();
}
E pronto, aqui está seu json.
Enfim, precisamos entender onde é sua duvida/necessidade para poder ajudar melhor.
Abraços
Lucas_Cavalcanti 23 de dez. de 2009
potato.rox 23 de dez. de 2009
Sim sim, eu li a documentação, vou seguir o seu exemplo e postar as mensagens de erro, acho que pode auxiliar melhor:
public class Simples {
private String descricao ;
public String getDescricao () {
return descricao ;
}
public void setDescricao ( String descricao ) {
this . descricao = descricao ;
}
}
//imports +
import br.com.caelum.vraptor.Path ;
import br.com.caelum.vraptor.Resource ;
import br.com.caelum.vraptor.Result ;
import static br.com.caelum.vraptor.view.Results.* ;
@Resource
public class BlahController {
private final Result result ;
public BlahController ( Result result ){
this . result = result ;
}
@Path ( "/blah" )
public void form () {
}
@Path ( "/blah/metodo" )
public void metodo () {
Simples s = new Simples ();
s . setDescricao ( "teste" );
result . use ( json ()). from ( s ). serialize ();
}
}
23 / 12 / 2009 16 : 11 : 47 org . apache . catalina . core . StandardWrapperValve invoke
SEVERE : Servlet . service () for servlet default threw exception
br . com . caelum . vraptor . InterceptionException : java . lang . NoClassDefFoundError : com / thoughtworks / xstream / io / HierarchicalStreamDriver
at br . com . caelum . vraptor . interceptor . ExecuteMethodInterceptor . intercept ( ExecuteMethodInterceptor . java : 76 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 46 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 59 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 48 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 59 )
at br . com . caelum . vraptor . interceptor . ParametersInstantiatorInterceptor . intercept ( ParametersInstantiatorInterceptor . java : 72 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 46 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 59 )
at br . com . caelum . vraptor . interceptor . InstantiateInterceptor . intercept ( InstantiateInterceptor . java : 42 )
at br . com . caelum . vraptor . core . InstantiatedInterceptorHandler . execute ( InstantiatedInterceptorHandler . java : 41 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 59 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 48 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 59 )
at br . com . caelum . vraptor . interceptor . InterceptorListPriorToExecutionExtractor . intercept ( InterceptorListPriorToExecutionExtractor . java : 46 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 46 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 59 )
at br . com . caelum . vraptor . interceptor . FlashInterceptor . intercept ( FlashInterceptor . java : 80 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 46 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 59 )
at br . com . caelum . vraptor . interceptor . ResourceLookupInterceptor . intercept ( ResourceLookupInterceptor . java : 67 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 46 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 59 )
at br . com . caelum . vraptor . core . DefaultRequestExecution . execute ( DefaultRequestExecution . java : 62 )
at br . com . caelum . vraptor . VRaptor $ 1. insideRequest ( VRaptor . java : 91 )
at br . com . caelum . vraptor . ioc . spring . SpringProvider . provideForRequest ( SpringProvider . java : 55 )
at br . com . caelum . vraptor . VRaptor . doFilter ( VRaptor . java : 88 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 235 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 206 )
at org . apache . catalina . core . StandardWrapperValve . invoke ( StandardWrapperValve . java : 233 )
at org . apache . catalina . core . StandardContextValve . invoke ( StandardContextValve . java : 191 )
at org . apache . catalina . core . StandardHostValve . invoke ( StandardHostValve . java : 128 )
at org . apache . catalina . valves . ErrorReportValve . invoke ( ErrorReportValve . java : 102 )
at org . apache . catalina . core . StandardEngineValve . invoke ( StandardEngineValve . java : 109 )
at org . apache . catalina . connector . CoyoteAdapter . service ( CoyoteAdapter . java : 293 )
at org . apache . coyote . http11 . Http11Processor . process ( Http11Processor . java : 849 )
at org . apache . coyote . http11 . Http11Protocol $ Http11ConnectionHandler . process ( Http11Protocol . java : 583 )
at org . apache . tomcat . util . net . JIoEndpoint $ Worker . run ( JIoEndpoint . java : 454 )
at java . lang . Thread . run ( Thread . java : 619 )
Caused by : java . lang . NoClassDefFoundError : com / thoughtworks / xstream / io / HierarchicalStreamDriver
at java . lang . Class . getDeclaredConstructors0 ( Native Method )
at java . lang . Class . privateGetDeclaredConstructors ( Class . java : 2389 )
at java . lang . Class . getDeclaredConstructors ( Class . java : 1836 )
at org . springframework . beans . factory . annotation . AutowiredAnnotationBeanPostProcessor . determineCandidateConstructors ( AutowiredAnnotationBeanPostProcessor . java : 191 )
at br . com . caelum . vraptor . ioc . spring . InjectionBeanPostProcessor . determineCandidateConstructors ( InjectionBeanPostProcessor . java : 42 )
at org . springframework . beans . factory . support . AbstractAutowireCapableBeanFactory . determineConstructorsFromBeanPostProcessors ( AbstractAutowireCapableBeanFactory . java : 859 )
at org . springframework . beans . factory . support . AbstractAutowireCapableBeanFactory . createBeanInstance ( AbstractAutowireCapableBeanFactory . java : 831 )
at org . springframework . beans . factory . support . AbstractAutowireCapableBeanFactory . doCreateBean ( AbstractAutowireCapableBeanFactory . java : 440 )
at org . springframework . beans . factory . support . AbstractAutowireCapableBeanFactory $ 1. run ( AbstractAutowireCapableBeanFactory . java : 409 )
at java . security . AccessController . doPrivileged ( Native Method )
at org . springframework . beans . factory . support . AbstractAutowireCapableBeanFactory . createBean ( AbstractAutowireCapableBeanFactory . java : 380 )
at org . springframework . beans . factory . support . AbstractBeanFactory $ 2. getObject ( AbstractBeanFactory . java : 302 )
at org . springframework . web . context . request . AbstractRequestAttributesScope . get ( AbstractRequestAttributesScope . java : 43 )
at org . springframework . beans . factory . support . AbstractBeanFactory . doGetBean ( AbstractBeanFactory . java : 298 )
at org . springframework . beans . factory . support . AbstractBeanFactory . getBean ( AbstractBeanFactory . java : 185 )
at org . springframework . beans . factory . support . AbstractBeanFactory . getBean ( AbstractBeanFactory . java : 164 )
at org . springframework . beans . factory . support . DefaultListableBeanFactory . getBeansOfType ( DefaultListableBeanFactory . java : 308 )
at org . springframework . beans . factory . support . DefaultListableBeanFactory . getBeansOfType ( DefaultListableBeanFactory . java : 297 )
at org . springframework . context . support . AbstractApplicationContext . getBeansOfType ( AbstractApplicationContext . java : 942 )
at org . springframework . beans . factory . BeanFactoryUtils . beansOfTypeIncludingAncestors ( BeanFactoryUtils . java : 224 )
at br . com . caelum . vraptor . ioc . spring . VRaptorApplicationContext . getBean ( VRaptorApplicationContext . java : 209 )
at br . com . caelum . vraptor . ioc . spring . SpringBasedContainer . instanceFor ( SpringBasedContainer . java : 61 )
at br . com . caelum . vraptor . core . DefaultResult . use ( DefaultResult . java : 47 )
at br . com . ahrpius . controller . PerguntaController . salvar ( PerguntaController . java : 27 )
at sun . reflect . NativeMethodAccessorImpl . invoke0 ( Native Method )
at sun . reflect . NativeMethodAccessorImpl . invoke ( NativeMethodAccessorImpl . java : 39 )
at sun . reflect . DelegatingMethodAccessorImpl . invoke ( DelegatingMethodAccessorImpl . java : 25 )
at java . lang . reflect . Method . invoke ( Method . java : 597 )
at br . com . caelum . vraptor . interceptor . ExecuteMethodInterceptor . intercept ( ExecuteMethodInterceptor . java : 50 )
... 37 more
Caused by : java . lang . ClassNotFoundException : com . thoughtworks . xstream . io . HierarchicalStreamDriver
at org . apache . catalina . loader . WebappClassLoader . loadClass ( WebappClassLoader . java : 1387 )
at org . apache . catalina . loader . WebappClassLoader . loadClass ( WebappClassLoader . java : 1233 )
at java . lang . ClassLoader . loadClassInternal ( ClassLoader . java : 320 )
... 66 more
Lucas_Cavalcanti 23 de dez. de 2009
Olhe a exception:
java.lang.NoClassDefFoundError: com/thoughtworks/xstream/io/HierarchicalStreamDriver
sempre que uma exception dessa acontecer, significa que está faltando algum jar no seu classpath… No caso é o xstream, que está na pasta lib/optional do zip do VRaptor
tem um site mto bom que te ajuda nos NoClassDefFoundErrors:
http://jarfinder.com/
garcia-jj 23 de dez. de 2009
Por isso que é sempre importante quando algum colega possui uma dúvida ou problema explicar ao máximo o que está acontecendo.
Iriamos ficar até o final do ano (que já está chegando, hehe) para explicar sobre json… e nem era esse o problema. Era apenas um jar que faltava no classpath.
Abraços
potato.rox 23 de dez. de 2009
Funcionou! Obrigado!
Inicialmente eu não postei detalhes pois acabei tentando várias opções, e nem pensei em postar a inicial.
Acho que foi um pouco de vacilo meu não ter lido direito os erros. :oops:
garcia-jj 23 de dez. de 2009
Continue postando suas dúvidas.
Abraços :thumbup:
potato.rox 29 de dez. de 2009
Andei lendo que é possível serializar collections no JSON, porém é necessario usar o vraptor3.0.3-SNAPSHOT…
alguém poderia me explicar como gerar esse SNAPSHOT e usa-lo?
ou mesmo fontes de estudo à respeito…
Grato!
garcia-jj 30 de dez. de 2009
potato.rox 30 de dez. de 2009
garcia-jj 30 de dez. de 2009
Você deve substituir esse jar que você baixou pelo jar que já existe do vraptor em seu projeto.