Java 错误ID应自动递增时为空
我正在尝试创建一个web表单,允许用户向数据库添加项目。问题是,当我提交上述表格时,我会出现以下错误: 字段“id”上的对象“产品”中的字段错误:拒绝值[null];代码[类型不匹配.products.id,类型不匹配.id,类型不匹配.int,类型不匹配];论据 这是我的jsp页面:Java 错误ID应自动递增时为空,java,spring,spring-mvc,Java,Spring,Spring Mvc,我正在尝试创建一个web表单,允许用户向数据库添加项目。问题是,当我提交上述表格时,我会出现以下错误: 字段“id”上的对象“产品”中的字段错误:拒绝值[null];代码[类型不匹配.products.id,类型不匹配.id,类型不匹配.int,类型不匹配];论据 这是我的jsp页面: <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEn
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Add Item Page</title>
</head>
<body>
<h1> Add an Item </h1>
<form action="/addItem" method="post">
<div class="form-group">
<label for="name">Name</label>
<input class="form-control" type = "text" id="name" name="name" required minlength="2" autocomplete="off">
</div>
<div class="form-group">
<label for="price">Price</label>
<input class="form-control" type = "text" id="price" name="price" required>
</div>
<div class="form-group">
<label for="quantity">Quantity</label>
<input class="form-control" type="number" id="quantity" name="quantity" required>
</div>
<div class="form-group">
<label for="foodGroup">Food Group</label>
<input class="form-control" type="text" id="foodGroup" name="foodgroup" required>
</div>
<button type="submit" class="btn btn-primary" value="submit">Add Product</button>
</form>
<a href="/" class="btn btn-secondary">Home</a>
</body>
最后,控制器:
@Controller
public class MainController
{
@Autowired
private ProductsDAO productsDAO;
@GetMapping("/")
public ModelAndView showHome()
{
ModelAndView mav = new ModelAndView("index");
return mav;
}
@RequestMapping("/showProducts")
public ModelAndView showProducts()
{
List<Products> leListOfProducts = productsDAO.findAll();
ModelAndView mav = new ModelAndView("showProducts", "product", leListOfProducts);
return mav;
}
@RequestMapping("/addItem")
public ModelAndView showAddItemPage()
{
return new ModelAndView("addItem");
}
@PostMapping("/addItem")
public ModelAndView addProduct(Products product)
{
productsDAO.create(product);
return new ModelAndView("redirect:/index");
}
}
@控制器
公共类主控制器
{
@自动连线
私人产品;
@GetMapping(“/”)
公共模型和视图显示主页()
{
ModelAndView mav=新的ModelAndView(“索引”);
返回mav;
}
@请求映射(“/showProducts”)
公共模型和视图展示产品()
{
List leListOfProducts=productsDAO.findAll();
ModelAndView mav=新的ModelAndView(“展示产品”、“产品”、leListOfProducts);
返回mav;
}
@请求映射(“/addItem”)
公共模型和视图显示AddItemPage()
{
返回新的ModelAndView(“addItem”);
}
@后映射(“/addItem”)
公共模型和视图添加产品(产品)
{
productsDAO.创建(产品);
返回新的ModelAndView(“重定向:/index”);
}
}
这是表列及其设置的图片
我真的很感激你能提供的一切帮助
最好的
JBird我怀疑你的构造函数就是问题所在。尝试删除构造函数中的id,因为它是通过第三方方式生成的。此外,我认为您永远不会出于任何理智的原因需要setId()方法。我怀疑您的构造函数就是问题所在。尝试删除构造函数中的id,因为它是通过第三方方式生成的。此外,我认为您永远不会出于任何理智的原因需要setId()方法谢谢你的帮助@伊万迪米特罗夫:你能把你的评论作为回答吗?如果你这样做,我可以相信你的答案,并将此线程标记为已解决。
@Controller
public class MainController
{
@Autowired
private ProductsDAO productsDAO;
@GetMapping("/")
public ModelAndView showHome()
{
ModelAndView mav = new ModelAndView("index");
return mav;
}
@RequestMapping("/showProducts")
public ModelAndView showProducts()
{
List<Products> leListOfProducts = productsDAO.findAll();
ModelAndView mav = new ModelAndView("showProducts", "product", leListOfProducts);
return mav;
}
@RequestMapping("/addItem")
public ModelAndView showAddItemPage()
{
return new ModelAndView("addItem");
}
@PostMapping("/addItem")
public ModelAndView addProduct(Products product)
{
productsDAO.create(product);
return new ModelAndView("redirect:/index");
}
}