Pessoal, estou desenvolvendo um projeto que deve registrar os dados de uma pessoa, (nome, sobrenome, cpf, data de nascimento), e enviar para uma tabela html. Apos inserir os registros deve pegar todos os dados da tabela e persistir no banco. Porém, não estou conseguindo pegar essas informações da tabela para persisti-las. Retorna um erro informando que os campos estão vazios. Estou utilizando Java e JavaScript. Alguma sugestão?
Esse é o HTML
<div class="card">
<div class="card-body" style="padding-bottom: 15px">
<div class="card-header" align="center">
<label>Cadastrar Novo Candidato</label>
</div>
<div class="form-group" id="myForm" style="padding-top: 15px">
<div style="padding-bottom: 7px">
<input type="text" class="form-control" id="inputNome"
name="nome" placeholder="Primeiro nome *" required
maxlength="20">
</div>
<div style="padding-bottom: 7px">
<input type="text" class="form-control" id="inputSobreNome"
name="sobrenome" placeholder="Sobrenome *" required
maxlength="50">
</div>
<div style="padding-bottom: 7px">
<input type="text" class="form-control" id="inputCpf"
name="cpf" placeholder="CPF *" required
onkeypress="$(this).mask('000.000.000-00');">
</div>
<div style="padding-bottom: 7px">
<label>Data de Nascimento: <input type="date"
class="form-control"
th:value="${#calendars.format(dataNascimento,'dd-MMM-yyyy')}"
id="inputData" name="dataNascimento"
placeholder="Data nascimento *" required></label>
</div>
<small class="form-text text-muted">(*) Campos
obrigatórios</small>
<div>
<hr>
</div>
<div class="col-12">
<button onclick="save()" type="submit" class="btn btn-success">
Inserir na Tabela <i class="glyphicon glyphicon-arrow-right"></i>
</button>
</div>
</div>
</div>
</div>
</form>
<!-- Fim do formulario de cadastros do candidatos -->
</div>
<div class="col">
<form method="post" style="padding-right: 15px; padding-left: 0px">
<!-- Inicio da tabela de candidatos -->
<div>
<table id="dtable"
class="table table-bordered table-responsive table table-hover"
cellspacing="0" width="900">
<thead class="table table-dark">
<tr>
<th>Nome</th>
<th>Sobrenome</th>
<th width="120">CPF</th>
<th width="120">Data</th>
<th width="90">Editar</th>
</tr>
</thead>
<tbody>
</tbody>
<!-- ===========================Rodapé da tabela================= -->
<caption>
<button type="submit" id="convert-table" class="btn btn-success">Salvar</button>
</caption>
</table>
</div>
</form>
<!-- Fim da tabela de candidatos -->
</div>
</div>
</div>
Esse é o JavaScript
<script type="text/javascript"> $('#convert-table').click(function() { var table = $('#dtable').tableToJSON(); // Convert the table into a javascript object if(table == null){ alert('Não há linhas na tabela') return false; }else{ console.log(table); alert(JSON.stringify(table)); } }); </script>
O metodo POST
// METODO QUE SALVA OS DADOS DOS CANDIDATOS. @RequestMapping(value = "/pessoa", method = RequestMethod.POST) public ResponseEntity<Pessoa> salvar(Pessoa pessoa) { return pessoaService.salva(pessoa); }
O erro
# Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sun Sep 26 22:34:00 BRT 2021
There was an unexpected error (type=Internal Server Error, status=500).
Validation failed for classes [com.contratacao.model.Pessoa] during persist time for groups [javax.validation.groups.Default, ] List of constraint violations:[ ConstraintViolationImpl{interpolatedMessage='Sobrenome não foi informado', propertyPath=sobrenome, rootBeanClass=class com.contratacao.model.Pessoa, messageTemplate='Sobrenome não foi informado'} ConstraintViolationImpl{interpolatedMessage='A data de nascimento é obrigatória. O Cliente não foi adicionado à lista', propertyPath=dataNascimento, rootBeanClass=class com.contratacao.model.Pessoa, messageTemplate='A data de nascimento é obrigatória. O Cliente não foi adicionado à lista'} ConstraintViolationImpl{interpolatedMessage='Nome não foi informado', propertyPath=nome, rootBeanClass=class com.contratacao.model.Pessoa, messageTemplate='Nome não foi informado'} ConstraintViolationImpl{interpolatedMessage='CPF é obrigatório', propertyPath=cpf, rootBeanClass=class com.contratacao.model.Pessoa, messageTemplate='CPF é obrigatório'} ]
javax.validation.ConstraintViolationException: Validation failed for classes [com.contratacao.model.Pessoa] during persist time for groups [javax.validation.groups.Default, ] List of constraint violations:[ ConstraintViolationImpl{interpolatedMessage='Sobrenome não foi informado', propertyPath=sobrenome, rootBeanClass=class com.contratacao.model.Pessoa, messageTemplate='Sobrenome não foi informado'} ConstraintViolationImpl{interpolatedMessage='A data de nascimento é obrigatória. O Cliente não foi adicionado à lista', propertyPath=dataNascimento, rootBeanClass=class com.contratacao.model.Pessoa, messageTemplate='A data de nascimento é obrigatória. O Cliente não foi adicionado à lista'} ConstraintViolationImpl{interpolatedMessage='Nome não foi informado', propertyPath=nome, rootBeanClass=class com.contratacao.model.Pessoa, messageTemplate='Nome não foi informado'} ConstraintViolationImpl{interpolatedMessage='CPF é obrigatório', propertyPath=cpf, rootBeanClass=class com.contratacao.model.Pessoa, messageTemplate='CPF é obrigatório'} ]