I am developing a system with angular, java and restful jersey. However, I can not display the rest data in the view using the angle. The most I can do is generate multiple objects for each letter that contains in the rest XML and not the return of the data itself. I have already tried several forms, searched on the net, and the ones I can show something return is the same, objects generated from what I have written in the rest xml. Could someone give a light? Here are parts of the codes.
Service.js
angular.module('meusServicos', ['ngResource'])
.factory('recursoProduto', function($resource){ //retorna um objeto
return $resource('rest/produtos/:produtoId', null,{
update:{
method: 'PUT', params: {id: '@id'}
}
});
})
.factory('ProdutoFactory', function ($resource) {
console.log('entrou');
return $resource('/listacarrinho/rest/produtos/', {}, {
query: {
method: 'GET',
params: {},
isArray: false,
}
});
})
Controller js
var app = angular.module('rest.controllers', []);
angular.module('listacompras').controller('ProdutosController',
function($scope, recursoProduto,ProdutoFactory){
$scope.produtos = [];
$scope.filtro = '';
$scope.mensagem='';
$scope.produtos = ProdutoFactory.get();
console.log($scope.produtos)
//aqui já tentei substituir por query mas o angular da erro.
Where will I show the data?
<meu-painel class="col-md-2 animacao-painel" ng-repeat="produto in produtos | filter: filtro"
titulo="{{produto.titulo}}">
<meu-produto url="{{produto.url}}" titulo="{{produto.titulo}}" qtd="{{produto.qtd}}" valor="{{produto.valor}}" total="{{produto.total}}">
</meu-produto>
<a href="produtos/edit/{{produto.id}}" class="btn btn-primary btn-block">Editar</a>
<meu-botao-remover nome="Remover" acao="remover(produto)">
</meu-botao-remover>
</meu-painel> <!--final do panel-->
XML
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<produtoHTTPs>
<ProdutoHTTP>
<id>1</id>
<qtd>3</qtd>
<titulo>Teste</titulo>
<total>13.5</total>
<url>teste</url>
<valor>4.5</valor>
</ProdutoHTTP>
main
<div class="jumbotron">
<h1 class="text-center">Lista de Compras</h1>
</div>
<div class="row">
<div class="col-md-12">
<!-- Caso false o ng-show="mensagem.length" não mostrará mensagem (em caso de length for null)-->
<p ng-show="mensagem.length" class="alert alert-info">{{mensagem}}</p>
<form>
<div class="input-group">
<span class="input-group-btn">
<a href="produtos/new" class="btn btn-primary" type="button">
Adicionar Produto
</a>
</span>
<input ng-model="filtro" ng-model-options="{debounce:500}" class="form-control" placeholder="Digite para filtrar seu produto"> <!-- debounce aplica um delay para aguardar a aplicação do filtro -->
</div>
</form>
</div> <!-- end colunm-->
</div> <!--end row-->
<div class="panel-group" class="col-md-12">
<div class="row">
<h2 class="text-center">Meu carrinho de compras</h2>
</div>
<meu-painel class="col-md-2 animacao-painel" ng-repeat="produto in produtos | filter: filtro"
titulo="{{produto.titulo}}">
<meu-produto url="{{produto.url}}" titulo="{{produto.titulo}}" qtd="{{produto.qtd}}" valor="{{produto.valor}}" total="{{produto.total}}">
</meu-produto>
<a href="produtos/edit/{{produto.id}}" class="btn btn-primary btn-block">Editar</a>
<meu-botao-remover nome="Remover" acao="remover(produto)">
</meu-botao-remover>
</meu-painel> <!--final do panel-->
</div>
</html>
Rest
package rest;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.glassfish.jersey.process.internal.RequestScoped;
import dao.ProdutoDAO;
import http.ProdutoHTTP;
import model.Produto;
/**
* Essa classe vai expor os métodos para serem acessasdos via http
*
* @Path - Caminho para a chamada da classe que vai representar o nosso serviço
* */
@RequestScoped
//@ApplicationPath("/listacarrinho")
@Path("/produtos")
public class ProdutoController {
private final ProdutoDAO repository = new ProdutoDAO();
/**
* @Consumes - determina o formato dos dados que vamos postar
* @Produces - determina o formato dos dados que vamos retornar
*
* Esse método cadastra uma nova pessoa
* */
@POST
@Consumes("application/json; charset=UTF-8")
@Produces("application/json; charset=UTF-8")
@Path("/new")
public String Cadastrar(Produto produto){
Produto entity = new Produto();
try {
//entity.setId(produto.getId());
entity.setTitulo(produto.getTitulo());
entity.setUrl(produto.getUrl());
entity.setQtd(produto.getQtd());
entity.setValor(produto.getValor());
entity.setTotal(produto.getTotal());
repository.adiciona(entity);
return "Registro adicionado com sucesso!";
} catch (Exception e) {
return "Erro ao adicionar um registro " + e.getMessage();
}
}
/**
* Essse método altera uma pessoa já cadastrada
* **/
@PUT
@Path("/edit/{id}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String Update(Produto produto){
Produto entity = new Produto();
try {
entity.setTitulo(produto.getTitulo());
entity.setUrl(produto.getUrl());
entity.setQtd(produto.getQtd());
entity.setValor(produto.getValor());
entity.setTotal(produto.getTotal());
repository.atualiza(entity);
return "Registro alterado com sucesso!";
} catch (Exception e) {
return "Erro ao alterar o registro " + e.getMessage();
}
}
/**
* Esse método lista todas pessoas cadastradas na base
* */
@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public List<ProdutoHTTP> TodosProdutos(){
System.out.println("entrou no get");
List<ProdutoHTTP> produtos = new ArrayList<ProdutoHTTP>();
List<Produto> listaProdutos = repository.listaTodos();
for (Produto entity : listaProdutos) {
produtos.add(new ProdutoHTTP(entity.getId(), entity.getTitulo(),entity.getUrl(),entity.getQtd(),
entity.getValor(),entity.getTotal()));
}
return produtos;
}
/**
* Esse método busca uma pessoa cadastrada pelo código
* */
@GET
@Produces("application/json; charset=UTF-8")
@Path("/{id}")
public ProdutoHTTP buscaPorId(@PathParam("id") Integer id){
Produto entity = repository.buscaPorId(id);
if(entity != null)
return new ProdutoHTTP(entity.getId(), entity.getTitulo(),entity.getUrl(),entity.getQtd(),
entity.getValor(),entity.getTotal());
return null;
}
/**
* Excluindo uma pessoa pelo código
* */
@DELETE
@Produces("application/json; charset=UTF-8")
@Path("/{id}")
public String Excluir(@PathParam("id") Integer id){
try {
repository.remove(id);
return "Registro excluido com sucesso!";
} catch (Exception e) {
return "Erro ao excluir o registro! " + e.getMessage();
}
}
}
Does anyone know why it does not show the object with the correct data but does it generate an object for each xml letter? What's wrong with the code? Thanks so much for the help !!