Inserir os dados de uma tabela html no banco de dados via post com Java, JavaScript

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'} ]