JSON + VRaptor3 + Extjs4

8 respostas
neguinho.etav

Opa galera,

Estou tentando fazer uma tela de visualização de dados com ExtJS e VRaptor porém quando tento executar eu recebo a seguinte mensagem de erro:

Segue o trecho de código do meu resource:

@Path("/teste/welcome.json")
	public void welcome() {
		Funcionario u = new Funcionario();
		u.setNome("everton");
		u.setNomeGuerra("trindade");
		u.setGraduacao("TC");
		u.setMatricula("PC20000");
		result.use(ExtJSJson.class).from(u).serialize();
	}

Segue o trecho de código em que eu tento recuperar o JSON com ExtJS:

Ext.define('Funcionario', {
		   extend: 'Ext.data.Model',
			fields : [ 
			{name : 'nome'}, 
			{name : 'matricula'}, 
			{name : 'nomeGuerra'}, 
			{name : 'graduacao'}
			]
	   });
	   
	var ds = Ext.create('Ext.data.JsonStore', {
		model: 'Funcionario',
		proxy: {
			type: 'ajax',
			url : '/teste/welcome.json',
			reader: {
				root : 'data'
			}
		}
	});

Segue JSON renderizado quando eu acesso a url: teste/welcome.json

{"data": {"nome": "everton","nomeGuerra": "trindade","graduacao": "TC","matricula": "PC20000"}}

Alguém pode me ajudar quando ao meu pequeno problema?

8 Respostas

Lucas_Cavalcanti

será que o ExtJS não está esperando que o data seja um array?

tenta ao invés de serializar direto o funcionario, crie uma List só com ele e use isso pra serializar.

neguinho.etav

Lucas Cavalcanti:
será que o ExtJS não está esperando que o data seja um array?

tenta ao invés de serializar direto o funcionario, crie uma List só com ele e use isso pra serializar.

Opa Lucas,

O erro continua o mesmo… segue o trecho de código:

@Path("/teste/welcome.json")
	public void welcome() {
		Funcionario u = new Funcionario();
		u.setNome("everton");
		u.setNomeGuerra("trindade");
		u.setGraduacao("TC");
		u.setMatricula("PC20000");
		
		List<Funcionario> l = new ArrayList<Funcionario>();
		l.add(u);
		result.use(ExtJSJson.class).from(l).serialize();
	}

resultado do JSON:

ViniGodoy

Por favor, use as tags informativas como [Resolvido] para informações óbvias.
Dizer coisas como [Ajuda], [Dúvida] ou [Socorro] não adiciona nada ao título.

Lucas_Cavalcanti

vc consegue ver aonde tá dando esse erro?

instale o firebug num firefox e veja onde o erro acontece

lucasmurata

Isso ai é um erro no componente Store do seu ExtJS, o VRaptor está serializando certo.

Por padrão o ExtJS espera receber o tamanho da sua List. Voce deve setar no totalProperty do Store.
Outra coisa é que a os elementos do JSON precisam ter um identificador único (ID), e no seu JSON parece que nao tem.

De uma olhada nessas duas coisas. E retorne aqui.

Abraço.

neguinho.etav

lucasmurata:
Isso ai é um erro no componente Store do seu ExtJS, o VRaptor está serializando certo.

Por padrão o ExtJS espera receber o tamanho da sua List. Voce deve setar no totalProperty do Store.
Outra coisa é que a os elementos do JSON precisam ter um identificador único (ID), e no seu JSON parece que nao tem.

De uma olhada nessas duas coisas. E retorne aqui.

Abraço.

Como eu posso fazer para que seja retornado no JSon o tamanho da minha lista?

lucasmurata

neguinho.etav:
lucasmurata:
Isso ai é um erro no componente Store do seu ExtJS, o VRaptor está serializando certo.

Por padrão o ExtJS espera receber o tamanho da sua List. Voce deve setar no totalProperty do Store.
Outra coisa é que a os elementos do JSON precisam ter um identificador único (ID), e no seu JSON parece que nao tem.

De uma olhada nessas duas coisas. E retorne aqui.

Abraço.

Como eu posso fazer para que seja retornado no JSon o tamanho da minha lista?

O Vraptor tem uma classe ExtJSON, aí voce utliza esse cara e seta o total do tamanho.

Mas pelo erro que está dando, eu acho que é mais pelo fato de seus registros estarem indo sem ID.

Lucas_Cavalcanti

faça:

result.use(ExtJSJson.class).from(u).total(1).serialize();
Criado 19 de janeiro de 2012
Ultima resposta 20 de jan. de 2012
Respostas 8
Participantes 4