java - Spring 中的表单处理

标签 java spring spring-boot thymeleaf

我对 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());

  }

}

Screenshot of the error

html form snippet code

最佳答案

该错误表明您提交的项目可能有错误,必填字段可能为空或提交的值无法解析。 要查看实际错误,您可以使用类似

@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/

相关文章:

node.js - 在 Angular 中执行 Http get 方法而不重试并等待服务器发送响应?

java - 如何在 Spring Boot 中管理无限进程?

java - 如何使用 JPanel 设置按钮大小

java - 用java读取Dxf文件

java - Spring Security for Rest @PreAuthorize 500错误

java - Spring 3.1.2 RowMapper参数化

mysql - Spring Mysql com.mysql.jdbc.MysqlDataTruncation : Data truncation: Data too long for column

java - 使用 Android 应用程序验证 xml 架构

java - 如何使一个方法更改另一个方法的返回语句( boolean 值)

hibernate - 我们什么时候使用 hibernate 的 session 刷新来对抗 setComplete()