Vou colocar o link do projeto do github. Estou tentando colocar data para pegar com ajax, e enviar para o meu banco de dados, que está conectado junto com o meu springboot. Mas quando envio o formulário, aparece o erro:
{"timestamp":1622313294057,"status":500,"error":"Internal Server Error","message":"","path":"/api/receita/incluir"}
Alguém pode me dar uma luz. Por favor.
Back-End:
package com.savemoney.savemoney.Entities;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.sql.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="receita")
public class Receita{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String nome_receita;
private float valor_receita;
private String descricao_receita;
@DateTimeFormat (pattern = "dd/MM/yyyy")
private Date data_receita;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome_receita() {
return nome_receita;
}
public void setNome_receita(String nome_receita) {
this.nome_receita = nome_receita;
}
public float getValor_receita() {
return valor_receita;
}
public void setValor_receita(float valor_receita) {
this.valor_receita = valor_receita;
}
public String getDescricao_receita() {
return descricao_receita;
}
public void setDescricao_receita(String descricao_receita) {
this.descricao_receita = descricao_receita;
}
public Date getData_receita() {
return data_receita;
}
public void setData_receita(Date data_receita) {
this.data_receita = data_receita;
}
package com.savemoney.savemoney.Resources;
import java.util.List;
import com.savemoney.savemoney.Controller.Receita_Controller;
import com.savemoney.savemoney.Entities.Receita;
import com.savemoney.savemoney.Repositories.ReceitaRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/api/receita")
public class ReceitaResource {
@Autowired
private ReceitaRepository receita_repository;
private ResponseEntity<Receita> responseEntity;
@GetMapping("/listar")
public List<Receita> listar() {
return receita_repository.findAll();
}
@GetMapping("get/{id}")
public Receita get(@PathVariable(value = "id") long id) {
return receita_repository.findById(id);
}
@PostMapping("/incluir")
public ResponseEntity incluir(@RequestBody Receita receita) {
Receita_Controller receita_controller = new Receita_Controller();
if (receita_controller.Validar_Receita(receita)) {
receita = receita_repository.save(receita);
return new ResponseEntity(receita, HttpStatus.OK);
} else {
return new ResponseEntity("Receita é inválido", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PutMapping("/editar")
public ResponseEntity<Receita> editar(@RequestBody Receita receita) {
Receita_Controller receita_controller = new Receita_Controller();
if (receita_controller.Validar_Receita(receita)) {
receita = receita_repository.save(receita);
return new ResponseEntity(receita, HttpStatus.OK);
} else {
return new ResponseEntity("Nome do aluno é inválido", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PostMapping("/remover")
public Receita remover(@RequestBody Receita receita) {
receita_repository.delete(receita);
return receita;
}
@GetMapping("/getTotal")
public int getTotal() {
return receita_repository.findAll().size();
}
}
package com.savemoney.savemoney;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.annotation.PostConstruct;
import java.util.TimeZone;
@SpringBootApplication
public class SavemoneyApplication {
public static void main(String[] args) {
SpringApplication.run(SavemoneyApplication.class, args);
}
@PostConstruct
public void init(){
// Setting Spring Boot SetTimeZone
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
}
Front-End:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="sortcut icon" href="view/img/LOGO_SAVEMONEY.png" width="16px" height="16px">
<title>SAVEMONEY - Receita</title>
<!-- CSS only -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-wEmeIV1mKuiNpC+IOBjI7aAzPcEZeedi5yW5f2yOq55WWLwNGmvvx4Um1vskeMj0" crossorigin="anonymous">
<link href="../view/style2.css" rel="stylesheet">
<!--END-->
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light item2 ">
<div class="container-fluid">
<a class="navbar-brand" href="#">SAVEMONEY</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="../Usuario/dashboard.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Receita</a>
</li>
<li class="nav-item">
<a class="nav-link" href="../Usuario/despesa.html">Despesa</a>
</li>
<li class="nav-item">
<a class="nav-link" href="../Config/config.html">Configurações</a>
</li>
</li>
<li class="nav-item">
<a class="nav-link disabled " href="#" tabindex="-1" aria-disabled="true"><input class="item_input" type="submit" value="Sair"></a>
</li>
</ul>
</div>
</div>
</nav>
<div class=" grid1 container_dashboard item2_dashboard">
<div class="item2_view_geral item2 ">
<h1>Receitas</h1>
<table class="table" id="tabela_listar_receitas_1">
<thead>
<tr>
<th>Nome</th>
<th>Valor</th>
</tr>
</thead>
<tbody id="tabela_listar_aluno_tbody_1"></tbody>
</table>
</div>
<div class="item3_dashboard_2 item item3_dashboard item2">
<h1>Adicionar</h1>
<div class="alert alert-danger collapse" role="alert" id="div-alert-message">
<a class="close" onclick="esconderAlert()">×</a>
</div>
<form action="../Usuario/receita.html" class="form-example" id="form-adicionar">
<div class="form-example">
<label for="input_nome_receita">Nome da receita:</label>
<input type="text" name="nome_receita" id="input_nome_receita" required>
</div>
<div class="form-example">
<label for="input_valor_receita">Valor:</label>
<input type="number" name="valor_receita" id="input_valor_receita" required>
</div>
<div class="form-example">
<label for="input_data_receita">Data:</label>
<input class="form-example" type="date" id="input_data_receita">
</div>
<div class="form-example">
<label for="input_descricao_receita">Descrição:</label>
<input type="text" name="descricao_receita" id="input_descricao_receita" required>
</div>
<hr>
<div class="submit_inputs_receita">
<input type="submit" value="Adicionar">
<!--
<input type="submit" value="Editar">
<input type="submit" value="Exclur">
<input type="submit" value="Cancelar">
-->
</div>
</form>
</div>
</div>
<!--JQUERY + BOOTSTRAP-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<!-- JavaScript Bundle with Popper -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-p34f1UUtsS3wqzfto5wAAmdvj+osOnFyQFpp4Ua3gs/ZVWx6oOypYoCJhGGScy+8" crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="../js/listar_receita.js"></script>
<script src="../js/adicionar_receita.js"></script>
<script src="../js/savemoney.js"></script>
</body>
</html>
$(document).ready(function (){
$.ajax({
url:'http://localhost:8080/api/receita/listar',
type:'get',
dataType: 'json',
success: function(result){
var html = '';
$.each(result, function (i, data){
html += '<tr><td>' + data.id +'</td>';
html += '<td>' + data.nome_receita +'</td>';
html += '<td>R$ ' + data.valor_receita +'</td>';
html += '<td>'+ data.descricao_receita +'</td>';
html += '<td>' + data.Data_receita +'</td></tr>';
$("#tabela_listar_aluno_tbody").html(html);
});
}
})
});
$(document).ready(function (){
$.ajax({
url:'http://localhost:8080/api/receita/listar',
type:'get',
dataType: 'json',
success: function(result){
var html = '';
$.each(result, function (i, data){
html += '<tr><td>' + data.nome_receita +'</td>';
html += '<td>R$ ' + data.valor_receita +'</td></tr>';
$("#tabela_listar_aluno_tbody_1").html(html);
});
}
})
});
//Processar Formulario
$ ('#form-adicionar').submit(function (event){
event.preventDefault();
Data_receita = new Date($('#input_data_receita').val());
//Criar formData
var formData = {
'nome': $('#input_nome_receita').val(),
'valor': $('#input_valor_receita').val(),
'data': Data_receita.toUTCString(),
'descricao': $('#input_descricao_receita').val(),
};
$.ajax({
headers : {
'Accept' : 'application/json',
'Content-Type' : 'application/json'
},
type: 'POST',
url: 'http://localhost:8080/api/receita/incluir',
data: JSON.stringify(formData),
dataType: 'json',
encode: true,
success: function(data){
location.href = 'receita.html';
},
error:function (data){
$('#div-alert-message').prepend(data.responseText);
$('#div-alert-message').fadeIn();
}
});
});
function GetURLParameter(sParam) {
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++)
{
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam)
{
return sParameterName[1];
}
}
}
function formatDate(date) {
var d = new Date(date),
month = '' + (d.getUTCMonth() + 1),
day = '' + d.getUTCDate(),
year = d.getUTCFullYear();
if (month.length < 2)
month = '0' + month;
if (day.length < 2)
day = '0' + day;
return [year, month, day].join('-');
}
function formatDateTime(dateTime) {
var d = new Date(dateTime),
month = '' + (d.getMonth() + 1),
day = '' + d.getDate(),
year = d.getFullYear();
hour = d.getHours();
minute = d.getMinutes();
if (month.length < 2)
month = '0' + month;
if (day.length < 2)
day = '0' + day;
if (hour.length < 2) {
hour = '0' + hour;
}
if (minute.length < 2) {
minute = '0' + minute;
}
dateFormated = [year, month, day].join('-');
timeFormated = [hour, minute].join(':');
return [dateFormated, timeFormated].join('T');
}
function esconderAlert() {
$('#div-alert-message').html("<a class='close' onclick='esconderAlert()'>×</a>");
$('#div-alert-message').hide();
}