1
resposta

CRUD Java web com JS ,erro de sintaxe ao atualizar(ERRO no js).

Ao adicionar a funcionalidade Atualizar ,aparece no console um erro de sintaxe,sei qual é o problema entretanto não sei como resolver.

view

 template(listaFornecedores) {
        return `<table border='1px'>
        <thead>
            <tr>
                <th>Nome</th>
                <th>CNPJ</th> 
                <th>Email</th>
            <tr>
         </thead>
         <tbody>
            ${listaFornecedores.map(fornecedor =>
                `<tr>
                    <td>${fornecedor.nome}</td>
                    <td>${fornecedor.cnpj}</td>
                    <td>${fornecedor.email}</td>
                    <td><button onclick="controller.remover(event,${fornecedor.id})">DELETAR</button></td>
                    <td><button onclick="controller.atualizarFornecedor(event,${fornecedor})">ATUALIZAR</button></td>


                 </tr>
                `).join('')}
         </tbody>
    </table>`;
}

Explicação : Focando no problema ,o evento que será disparado deverá receber todos atributos que foram digitados no formulário para que atualize em si,entretanto acusa de um erro de sintaxe por não poder receber um objeto

 atualizarFornecedor  (event,fornecedor) {
    event.preventDefault();
    console.log(fornecedor);
    let nome = document.querySelector("#txtnome").value;
    let cnpj = document.querySelector("#txtcnpj").value;
    let email = document.querySelector("#txtemail").value;
    //fornecedor = new Fornecedor(nome, cnpj, email);
    fornecedor.nome = nome;
    fornecedor.cnpj = cnpj;
    fornecedor.email = email;

    const self = this;

    this._service.atualizaFornecedor(fornecedor,
            function () {
                self.limparCamposFormulario();
                self.carregaFornecedor();
            },
            function (msg) {
                console.log(msg);
            }
    );
}

Explicação 2 Neste formulário recebemos os novos dados,a ideia seria modificar fornecedor pelos novos valores recebidos,porém eu não posso passar um objeto.

ERRO

controller.atualizarFornecedor(event,[object Object])

Se precisar que poste mais uma parte do código,só colocar nos comentários

Grato!

1 resposta

Olá, Felipe!

Como este trecho está em uma Template String do JS, o que estiver entre ${} vai ser transformado em String:

controller.atualizarFornecedor(event,${fornecedor})

Como fornecedor é um objeto, ele transforma em [object Object].

Faça o seguinte teste: remova o ${}. Dessa maneira, você estaria passando o próprio objeto.

Ficaria assim:

controller.atualizarFornecedor(event, fornecedor)