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

0 respostas
apijavajavascript
uerviton

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('[CPF removido]');">
							</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'} ]
Criado 27 de setembro de 2021
Respostas 0
Participantes 1