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 中给出一些动作
<form th:action="@detail" method="post">
像这样使用 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 2从入门到入坟 | 请求参数处理篇:源码分析之各种类型参数解析原理
Spring Boot 2从入门到入坟 | 请求参数处理篇:源码分析之各种类型参数解析原理
Spring boot 4 控制器错误:CrudRepository<Fournisseur,Long> 类型中的方法 save(S) 不适用于参数 (Fournisseur)