Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Objeto json no response vem nulo

estou criando um controle baseado no curso, para quando o usuário escolher uma opção de uma combobox e clicar no botão ele vai gravar essa opção no bd. meu json é enviado num array de objetos, ele esta aparecendo corretamente no firebug, entra na controller do spring, porem vem com o objeto nulo:

minha controller

@RequestMapping(value = "/combo", method = RequestMethod.GET)
    public @ResponseBody AreasAdmin combos(@ModelAttribute AreasAdmin areas) {

        AreasAdmin admin = new AreasAdmin();
        System.out.println(areas);

         admin = admin.listaAreas(areas);    


        return admin;

    }

e o ajax com metodo que guarda os objetos

var temporario = [];
var data = {};
function guardaObj() {

    var elem = document.getElementById("areas");
    var email = $("#email").val();

    if (elem != null || valor != 0) {

        var area = document.createElement("option");
        area.text = $('#Departamento option:selected').text();
        area.value = parseInt($("#Departamento").val());


        var data = {
            "departamento" : [ {
                "departamento" : area.text,
                "cod_Departamento" : area.value,
            } ],

            "setor" : [ {
                "setor" : "ola",
                "cod_Setor" : 5

            } ]
        };


        temporario.push(data);
        console.log(temporario);

        $("#Departamento option:selected").attr('disabled', 'disabled');

    } else {
        window.alert("Selecione uma opção valida");
    }

}

$(document).ready(function() {

    $('#btn').click(function() {


        $.ajax({
            type : 'GET',
            url : '/Preconizado/departamento/combo',

            crossDomain : true,
            data : JSON.stringify(temporario),
            contentType : "application/json; charset=utf-8",
            dataType : "json",

            success : function(data) {
                alert("sucesso");
                console.log(data);
            },
            error : function(data) {
                console.log("erro na funçao");
            }

        });

    });
});

quando envio o objeto para controler

departamento

    [Object { departamento="PGC",  cod_Departamento="1"}]
0

    Object { departamento="PGC",  cod_Departamento="1"}
cod_Departamento

    "1"
departamento

    "PGC"
setor

    [Object { setor="ola",  cod_Setor=5}]
0

    Object { setor="ola",  cod_Setor=5}
cod_Setor

    5
setor

    "ola"

como ele retorna

{"email":null,"cod_Departamento":0,"departamento":null,"cod_Setor":0,"setor":null}
3 respostas

É o mesmo problema dessa dúvida => https://cursos.alura.com.br/forum/topico-erro-http-status-400-required-int-parameter-39-id-39-is-not-present-22927

Acho que não vai rolar vc passar um json como GET para o seu controller.. Você precisa marcar no método do controller que quer consumir json e envia como POST. Também precisa marcar o parâmetro do método do controller com RequestBody.

Ja tenteu Request Body, parameter, mas nada funciona com Post, sera que o security esta barrando isso?

solução!

Se tiver barrando, não deveria nem entrar no método. Se a requisição estiver sendo enviada com o content-type = application/json, não deveria dar problema. Precisa conferir isso.