ExtJS4 + vRaptor: Controller não está convertendo json para objectos java

Boa tarde,

         Estou implementando um método salvar de um crud quando me deparei com o seguinte problema. O vRaptor não está convertendo o json em objecto java.

O Cliente está indo como null

public void criar(Cliente cliente){ System.out.println(cliente.getDataExpedicao()); }

Este é o Json que está sendo enviado:

Alguém pode me ajudar?

Olá

Para o Vraptor converter o cliente, vc tem que enviar os parametros no formato cliente.nome, cliente.id, cliente.cpfCnpj, e por ai vai, senão ele não tem como saber que os campos pertencem aquela variavel.

Tem um tutorial do Daniel que você pode ver pra entender como deve converter o json:

http://dkist.k2studio.com.br/2010/05/27/integracao-extjs-com-vraptor-3/

[]'s

Você está me dizendo que meu json deve ser enviado dessa forma?

Olá

Você está enviando os dados através de um form?

se sim, basta que seus inputs tenhas os nomes certos, que o própio método submit irá enviar da maneira correta.

ou você está gerando esse JSON e enviando para o vraptor de outra maneira?

Posta o código do seu form do ext pra gente ver como você está enviando os dados.

[]'s

o VRaptor não deserializa json por padrão (se vc fizer um post onde o corpo é o json), só xml.

mas se vc está em javascript, é fácil mandar form parameters

Usar form paramers ao invés de passar um json?

Fiz um teste, enviei um xml ele também não serializou.

precisa anotar o método com @Consumes, e o content-type da requisição tem que estar setado como “application/xml”

Lucas, deu certo. Coloquei essa annotation e funcionou.
No caso, o vRaptor usa o XStream para fazer isso, né?

exato, mas vc pode sobrescrever a implementação e usar outra lib

Ninguém nunca se habilitou a implementar a deserialização de json’s no vRaptor? Taí uma boa coisa pra eu fazer no meu tempo livre!

Só pra marcar como resolvido.

contribuições são sempre bem vindas =)

se precisar de qqer ajuda é só falar =)

corrigindo falha minha: existe o deserializer de json sim, e já está habilitado por padrão