Sitemap

Angular com Vraptor

1 min readNov 9, 2017

--

No inicio de 2016 desenvolvi uma aplicação utilizando AngularJs (v. 1.5.0) e vRaptor 3.4.2. Para enviar um JSON no formato padrão do vRaptor era preciso usar uma função chamada $httpParamSerializerJQLike. Funcionava muito bem e resolvia os problemas.

/*
{produto:{id:1,nome:'camiseta'}}
o vRaptor deve receber produto.id e produto.nome
*/
return $http({
method: 'POST',
url: "produto/adiciona",
data: $httpParamSerializerJQLike(produto),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});

Hoje estou no inicio de uma nova aplicação, e decidi usar o Angular 5 com vRaptor 4.2.0. Mudou muita coisa nos 2 frameworks, especialmente no Angular. Neste novo framework não existe o método $httpParamSerializerJQLike e não existe qualquer função similar.

Get Guilherme Villaca’s stories in your inbox

Join Medium for free to get updates from this writer.

A forma que encontrei para resolver isso foi a seguinte: 1º criando um model

export clas Produto {
id: number;
nome: string;
public initJSON(json: any): Produto{
this.id = json.id;
this.nome = json.nome;
}
public toJSON(){
return {
'produto.id' = this.id;
'produto.nome' = this.nome;
}
}
}

o 2º passo é no momento de enviar a informação para o vRaptor dentro do service.

save(produto: Produto){
let req = this.httpClient.post(this.url, $.param(produto.toJSON()), {
headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')
});
req.subscribe();
}

Reparem que o que faz a mágica é o método toJSON() do modelo que criamos e utilizando o método param do jQuery.

Para criar um objeto com dados do banco de dados basta utilizar o outro método criado no modelo.

this.produtoService.getById(params['id']).then(result => {
this.produto.initJSON(result['data'])
});

No Angular 5 os parâmetros da URL são acessíveis no componente utilizando o ActivatedRoute.

Caso alguém tenha dúvida posso criar um projeto e compartilhar via github.

--

--

Guilherme Villaca
Guilherme Villaca

Written by Guilherme Villaca

Analista de Sistemas na Universidade Estadual do Oeste do Paraná — Unioeste