Bom dia Pessoal, tudo bem?
Preciso de uma ajuda por favoor! rs
Vamos lá! Eu tenho um formulário de cadastro e nele estou passando um JSON para o Back-End, até aí ok, começou a complicar quando decidi que iria upar uma imagem no mesmo formulário. Como faço isso via ajax? E como recebo meus dados no Back-End? Vou passar o JSON separado do MultiPartFile? Alguma sugestão?
Segue minha função atual JS que passa os arquivos para o Back-End:
function cadastrar_aluno() {
var faculdade = {};
faculdade["codigo"] = $("#sel-faculdade option:selected").val();
faculdade["nome"] = $("#sel-faculdade option:selected").text();
var dadosbeneficios = $("#sel-beneficio-incluso").select2('data');
var codbeneficios = $("#sel-beneficio-incluso").select2('val');
var beneficios = [];
for(i = 0; i < dadosbeneficios.length; i++){
var beneficio = {
codigo: codbeneficios[i],
descricao: dadosbeneficios[i].text
};
beneficios.push(beneficio);
}
var dadoslocaisprox = $("#sel-local-util-proximo").select2('data');
var codlocaisprox = $("#sel-local-util-proximo").select2('val');
var locaisprox = [];
for(i = 0; i < dadoslocaisprox.length; i++){
var localprox = {
codigo: codlocaisprox[i],
descricao: dadoslocaisprox[i].text
};
locaisprox.push(localprox);
}
var aluno = {};
aluno["nome"] = $("#nome").val();
aluno["cpf"] = $("#cpf").val();
aluno["telefone"] = $("#telefone").val();
aluno["celular"] = $("#celular").val();
aluno["email"] = $("#email").val();
aluno["senha"] = $("#senha").val();
//aluno["fotoPath"] = $("#foto-path").val();
aluno["faculdade"] = faculdade;
aluno["beneficiosInclusos"] = beneficios;
aluno["locaisUteisProximos"] = locaisprox;
$.ajax({
type: "POST",
contentType: "application/json",
url: "/usuario/cadastraraluno",
data: JSON.stringify(aluno),
dataType: 'json',
cache: false,
timeout: 600000,
success: function (data) {
var json = "<h4>Ajax Response</h4><pre>"
+ JSON.stringify(data, null, 4) + "</pre>";
$('#feedback').html(json);
console.log("SUCCESS : ", data);
$("#btn-search").prop("disabled", false);
},
error: function (e) {
var json = "<h4>Ajax Response</h4><pre>"
+ e.responseText + "</pre>";
$('#feedback').html(json);
console.log("ERROR : ", e);
$("#btn-search").prop("disabled", false);
}
});
}
Segue meu método Back-End atual que recebe meu JSON Aluno:
@PostMapping(value = "/cadastraraluno", consumes= MediaType.APPLICATION_JSON_VALUE)
public void cadastrarUsuario(Aluno aluno) {
System.out.println(aluno);
System.out.println("Telefone: " + aluno.getTelefone());
System.out.println("Celular: " + aluno.getCelular());
System.out.println("Email: " + aluno.getEmail());
System.out.println("Senha: " + aluno.getSenha());
System.out.println("Faculdade: " + aluno.getFaculdade());
System.out.println("Beneficios Inclusos: " + aluno.getBeneficiosInclusos());
System.out.println("Locais Utéis Próx.: " + aluno.getLocaisUteisProximos());
System.out.println("Faixa Preço: " + aluno.getFaixaPreco());
//alunoRepository.save(aluno);
}
Alguém tem alguma ideia de como devo prosseguir?
Se puderem me ajudar serei muuito grato! Muito obrigado pela atenção desde já!