如何将数组从AngularJS发布到SpringMVC控制器?

时间:2017-06-02 23:47:48

标签: java angularjs arrays list http-post

我正在尝试将一个数组发布到spring mvc控制器但是我收到了错误的请求。我特别遇到阵列的问题,到目前为止我还没有做过。我真的不知道杰克逊图书馆是否存在问题。任何建议都将受到欢迎!

Angular Serivce

app.service('ConfirmacaoService', function ($http, $localStorage) {

    var usuario = $localStorage.usuarioLogado;
    var adicionadosNoCarrinho = $localStorage.confirmacaoCarrinho;

    this.salvarPedido = function (pedido) {

       var pedidoItem = {
            usuario: {idUsuario: usuario.idUsuario},
            pedido: {idPedido: 0},
            jogo: adicionadosNoCarrinho, ///THIS IS THE ARRAY
            endereco: {idEndereco: 0},
           // jogo: {idJogo: 0},
            frete: pedido.frete,
            totalPreco: pedido.totalPreco,
            precoFinal: pedido.precoFinal
        };

        var $res = $http.post('salvarPedido', pedidoItem);
        $res.success(function (data) {
            alert('deu cero', data);
        });
    };

});

Spring MVC Controller

@RequestMapping(value = "/salvarPedido", method = RequestMethod.POST)
public @ResponseBody
PedidoItems salvarPedido(@RequestBody PedidoItems pedidoItem) {

    dao.salvarItemPedido(pedidoItem);
    return pedidoItem;

}

PedidoItems模特课

public class PedidoItems {

    private int idPedidoItem;
    private Usuario usuario;
    private Pedido pedido;
    private List<Jogo> jogo;
    private Endereco endereco;
    //private Pagamento pagamento;
    private double frete;
    private double totalPreco;
    private double precoFinal;

    public PedidoItems() {

        usuario = new Usuario();
        pedido = new Pedido();
        jogo = new ArrayList<>();

        endereco = new Endereco();
    }

    public List<Jogo> getJogo() {
        return jogo;
    }

    public void setJogo(List<Jogo> jogo) {
        this.jogo = jogo;
    }

    public int getIdPedidoItem() {
        return idPedidoItem;
    }

    public void setIdPedidoItem(int idPedidoItem) {
        this.idPedidoItem = idPedidoItem;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public Pedido getPedido() {
        return pedido;
    }

    public void setPedido(Pedido pedido) {
        this.pedido = pedido;
    }

    public Endereco getEndereco() {
        return endereco;
    }

    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }

    public double getFrete() {
        return frete;
    }

    public void setFrete(double frete) {
        this.frete = frete;
    }

    public double getTotalPreco() {
        return totalPreco;
    }

    public void setTotalPreco(double totalPreco) {
        this.totalPreco = totalPreco;
    }

    public double getPrecoFinal() {
        return precoFinal;
    }

    public void setPrecoFinal(double precoFinal) {
        this.precoFinal = precoFinal;
    }
}

Jogo模特课

public class Jogo {

    private int idJogo;
    private String nomeJogo;
    private double preco;
    private Console console;

    public Jogo(){
        console = new Console();
    }

    public int getIdJogo() {
        return idJogo;
    }

    public void setIdJogo(int idJogo) {
        this.idJogo = idJogo;
    }

    public String getNomeJogo() {
        return nomeJogo;
    }

    public void setNomeJogo(String nomeJogo) {
        this.nomeJogo = nomeJogo;
    }

    public double getPreco() {
        return preco;
    }

    public void setPreco(double preco) {
        this.preco = preco;
    }

    public Console getConsole() {
        return console;
    }

    public void setConsole(Console console) {
        this.console = console;
    }
}

数组如下所示:jogo :Array(2)

1 个答案:

答案 0 :(得分:0)

确保您拥有适当的请求内容类型。它应该是'application / json'。因为Spring从请求中获取此信息并选择正确的消息处理程序,在您的情况下它应该是Jackson lib。如果请求的内容类型不是'application / json',您可以在$http参数中指定它。

$http标题的示例:

$http({
    method: 'POST',
    url: 'http://your_url',
    data: serializedData,
    headers: {
        'Content-Type': 'application/json'
    }}).success(...);