我对 spring 很陌生,我试图创建一个表单来创建一个新项目,然后将其保存到我的 MYSQL 数据库中。这里附上整个 Controller 类和 html 表单。
package com.emil.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.ui.Model;
import com.emil.model.Item;
import com.emil.repositories.ItemRepository;
@Controller
public class ItemController{
@Autowired
private ItemRepository itemRepository;
@RequestMapping(path="/items", method=RequestMethod.GET)
public String getItems(Model model){
model.addAttribute("items", itemRepository.findAll());
return "items";
}
@RequestMapping(path="/item", method=RequestMethod.GET)
public String getItem(Model model){
model.addAttribute("item", new Item());
return "item";
}
@RequestMapping(path="/item", method=RequestMethod.POST)
public void addNewItem(@ModelAttribute Item item){
Item newItem = new Item();
newItem.setItemDesc(item.getItemDesc());
}
}
最佳答案
该错误表明您提交的项目可能有错误,必填字段可能为空或提交的值无法解析。 要查看实际错误,您可以使用类似
@RequestMapping(path="/item", method=RequestMethod.POST)
public void addNewItem(@ModelAttribute Item item, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
bindingResult.getAllErrors().forEach(e -> System.out.println(e.toString()));
// Handle error
}
Item newItem = new Item();
newItem.setItemDesc(item.getItemDesc());
}
如果您知道如何调试(如果您不知道,您应该尝试学习它:-)),您可以在第一行放置一个断点并检查 BindingResult。
关于java - Spring 中的表单处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43181354/