Olá,
Como podem ver pelo código em baixo, tenho uma página jsp com um formulário para submissão de uma entrada, e no meu EntradaController tenho a receber como parâmetro um objecto Entrada, que quero introduzir na minha Base de Dados…
Quando submeto o formulário dá-me um erro HTTP Status 400…
Como faço para que o spring povoe o meu objecto?
cumprimentos.
EntradaController
package pt.isacm.pokerStats.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import pt.isacm.pokerStats.dao.DAOException;
import pt.isacm.pokerStats.dao.EntradaDAO;
import pt.isacm.pokerStats.dao.JogadorDAO;
import pt.isacm.pokerStats.model.Entrada;
@Controller
public class EntradaController {
private JogadorDAO jDao;
private EntradaDAO eDao;
@Autowired
public EntradaController(JogadorDAO jDao, EntradaDAO eDao){
this.jDao = jDao;
this.eDao = eDao;
}
@RequestMapping("inserirEntrada")
public String inserir(Model model){
try{
List<String> nomesJogador = this.jDao.getNomeJogadores();
model.addAttribute("nomesJogador", nomesJogador);
return "entrada/add";
}
catch(DAOException e){
System.out.println(e.getMessage());
return "admin/menu";
}
}
@RequestMapping("adicionaEntrada")
public String adicionar(Entrada entrada){
try{
this.eDao.adicionar(entrada);
return "admin/menu";
}
catch(DAOException e){
System.out.println(e.getMessage());
return "redirect:inserirEntrada";
}
}
}
Entrada
package pt.isacm.pokerStats.model;
import java.time.LocalDate;
public class Entrada {
private int idEntrada;
private double valor;
private LocalDate data;
private String nomeJogador;
public int getIdEntrada() {
return idEntrada;
}
public void setIdEntrada(int idEntrada) {
this.idEntrada = idEntrada;
}
public double getValor() {
return valor;
}
public void setValor(double valor) {
this.valor = valor;
}
public LocalDate getData() {
return data;
}
public void setData(LocalDate data) {
this.data = data;
}
public String getNomeJogador() {
return nomeJogador;
}
public void setNomeJogador(String nomeJogador) {
this.nomeJogador = nomeJogador;
}
}
add.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset= utf-8">
<title>Adicionar Entrada</title>
</head>
<body>
<form action="adicionaEntrada" method="get">
<h3>Selecione o Jogador:</h3>
<select name="nomeJogador">
<c:forEach var="nome" items="${nomesJogador}">
<option value="${nome}">${nome}</option>
</c:forEach>
</select>
<h3>Preencha os seguintes campos:</h3>
<br/>
Valor:<input type="number" step="0.01" min="0" name="valor"/>€<br/>
Data:<input type="date" name="data"/><br/><br/>
<input type="submit" value="Submeter"/>
</form>
</body>
</html>