Spring Boot 和 HTML 方法参数类型字符串所需的请求参数“Coord1”不存在]

Posted

技术标签:

【中文标题】Spring Boot 和 HTML 方法参数类型字符串所需的请求参数“Coord1”不存在]【英文标题】:Spring Boot and HTML Required request parameter 'Coord1' for method parameter type String is not present] 【发布时间】:2021-09-21 23:55:48 【问题描述】:

我刚刚开始使用 html + springboot。我准备了两个文件 HTML 文件格式如下:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
   <head>
      <meta charset="UTF-8" />
      <title>Add Info</title>
      <link rel="stylesheet" type="text/css" th:href="@/css/style.css"/>
   </head>
   <body>
      <h1>Insert an Info:</h1>
       
      <!--  
         In Thymeleaf the equivalent of
         JSP's $pageContext.request.contextPath/edit.html
         would be @/edit.html         
         -->
      <form th:action="@" method="post">
        <input type="text" th:name="Coord1"/> </br>
        <input type="text" th:name="Coord2"/> </br>
        <input type="text" th:name="Coord3"/> </br>
        <input type="text" th:name="Coord4"/> </br>
        <input type="submit"/> 
        </form>
       
      <br/>
       
      <!-- Check if errorMessage is not null and not empty -->
       
      <div th:if="$errorMessage" th:utext="$errorMessage"
         style="color:red;font-style:italic;">
         ...
      </div>
       
   </body>
</html>

我想得到 coord1、coord2、coord3 和 coord4 这四个值。我的 java 控制器文件包含这些行

package com.example.project.controller;

import java.io.IOException;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class MainController 
 @RequestMapping(value="",method=RequestMethod.GET)
 public void addAObjectForm(@RequestParam("Coord1") String Coord1,@RequestParam("Coord2") String Coord2,@RequestParam("Coord3") String Coord3, @RequestParam("Coord4")String Coord4) throws IOException 
     System.out.println(Coord1);
 
I 

当我运行这段代码时,我得到了错误

[2m2021-07-12 22:28:57.206[0;39m [33m WARN[0;39m [35m18812[0;39m [2m---[0;39m [2m[nio-8080-exec-3 ][0;39m [36m.wsmsDefaultHandlerExceptionResolver[0;39m [2m:[0;39m 已解决[org.springframework.web.bind.MissingServletRequestParameterException:方法参数类型字符串所需的请求参数“Coord1”不存在]

谁能帮帮我

【问题讨论】:

请求参数在查询字符串中,这就是你使用action="GET"得到的。你正在使用action="POST" @chrylis-cautiouslyoptimistic- 我已更改帖子以获取但仍有一些例外。看起来它可以看到 Html 文件或类似的东西 【参考方案1】:

您在表单中使用 POST 操作,并在控制器中使用 GET 方法。请匹配这些东西并更新状态:)

【讨论】:

我已经修改了代码,但总是出现一些错误 如何更改输入的 HTML 代码呢? -> 也只添加“name”属性【参考方案2】:

    首先在你的 pom.xml 中添加 thymeleaf 依赖。

    在:action like 中给出一些动作

    &lt;form th:action="@detail" method="post"&gt;

    像这样使用 make 控制器

@Controller
public class MainController 

  @GetMapping("/")
  public String show() 
      return "show"; // I had given name to view part as show.html
  

  @RequestMapping(value = "/detail", method = RequestMethod.POST)
  public void addAObjectForm(@RequestParam(value = "Coord1", required = false) String Coord1,
                             @RequestParam(value = "Coord2", required = false) String Coord2,
                             @RequestParam(value = "Coord3", required = false) String Coord3,
                             @RequestParam(value = "Coord4", required = false) String Coord4) throws IOException 
      System.out.println(Coord1);
  

 

【讨论】:

请采纳答案,如果对你有帮助。

以上是关于Spring Boot 和 HTML 方法参数类型字符串所需的请求参数“Coord1”不存在]的主要内容,如果未能解决你的问题,请参考以下文章

Spring boot 参数校验

Spring boot 参数校验

Spring Boot 2从入门到入坟 | 请求参数处理篇:源码分析之各种类型参数解析原理

Spring Boot 2从入门到入坟 | 请求参数处理篇:源码分析之各种类型参数解析原理

Spring boot 4 控制器错误:CrudRepository<Fournisseur,Long> 类型中的方法 save(S) 不适用于参数 (Fournisseur)

优雅的方式来校验spring-boot的form表单参数和json的body参数合法性验证方式