我是 Spring Boot 新手。我的控制器类中有 get 和 post 方法。 但是当我隐藏 get 方法时,我认为 post 方法应该运行而不会出现错误,直到我点击提交。我有百里香叶和 spring-web 依赖项。
当我同时使用 post 和 get 方法时,效果很好。
singer.html 页面:
ENTER SINGER NAME
Enter Singer name
Enter Singer name
Enter Singer name
Songs.html 页面:
CHALEYA
HERIYE HERIYE
MUSKURANE KE WAJAH
PHIR BHI TUMKO CHAHUNGA
但是当我注释掉控制器类中的 get 映射方法时,出现错误:
错误
当我重新加载本地主机时:
白标错误页面
此应用程序没有 /error 的显式映射,因此您将其视为后备。
2024 年 9 月 12 日星期四 21:32:45 国际标准时间
出现意外错误(类型=不允许的方法,状态=405)。
我在控制台中收到以下错误:
已解决[org.springframework.web.HttpRequestMethodNotSupportedException:不支持请求方法“GET”]
控制器类:(GetMapping方法注释掉)
package com.aman.music.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import com.aman.music.Singers;
@Controller
public class MyController {
@PostMapping("/")
public String home(@ModelAttribute Singers ss,Model model){
model.addAttribute("this",ss);
return "Songs" ;
}
// @GetMapping("/")
// public String hii(Model model) {
// model.addAttribute("this",new Singers());
// return "singers";
// }
}
这些是我的文件:
MusicPlayerApplication.java
package com.aman.music;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MusicPlayerApplication {
public static void main(String[] args) {
SpringApplication.run(MusicPlayerApplication.class, args);
}
}
控制器.java
package com.aman.music.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import com.aman.music.Singers;
@Controller
public class MyController {
@PostMapping("/")
public String home(@ModelAttribute Singers ss,Model model){
model.addAttribute("this",ss);
return "Songs" ;
}
@GetMapping("/")
public String hii(Model model) {
model.addAttribute("this",new Singers());
return "singers";
}
}
歌手.java
package com.aman.music;
public class Singers {
private String ArjitSingh;
private String Singer;
private String hello;
public String getHello() {
return hello;
}
public void setHello(String hello) {
this.hello = hello;
}
public String getArjitSingh() {
return ArjitSingh;
}
public void setArjitSingh(String arjitSingh) {
ArjitSingh = arjitSingh;
}
public String getSinger() {
return Singer;
}
public void setSinger(String singer) {
Singer = singer;
}
@Override
public String toString() {
return "Singers [ArjitSingh=" + ArjitSingh + ", Singer=" + Singer + ", hello=" + hello + "]";
}
}
Songs.html
<!DOCTYPE html>
<html xmlns:th="https://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Songs List</title>
</head>
<body>
<p>
<p><a href="https://www.youtube.com/watch?v=VAdGW7QDJiU">CHALEYA</a>
<p><a href="https://www.youtube.com/watch?v=RLzC55ai0eo">HERIYE HERIYE</a>
<p><a href="https://www.youtube.com/watch?v=HQ4Ox7mLqds">MUSKURANE KE WAJAH</a>
<p><a href="https://www.youtube.com/watch?v=_iktURk0X-A">PHIR BHI TUMKO CHAHUNGA</a>
</body>
</html>
singers.html
<!DOCTYPE html>
<html xmlns:th="https://www.thymeleaf.org">
<head>
<meta charset="UTF-8" http-equiv="Content-Type">
<title>Singer</title>
</head>
<body>
<h1>ENTER SINGER NAME</h1>
<form action="#" th:action="@{/}" th:object="${this}" method="post">
<p>Enter Singer name<input type="text" th:field="*{ArjitSingh}"/>
<p>Enter Singer name<input type="text" th:field="*{Singer}"/>
<p>Enter Singer name<input type="text" th:field="*{hello}"/>
<p><input type="submit" value="SUBMIT"/>
</form>`
</body>
</html>
请忽略我正在使用的变量和文件名
当您在浏览器中打开 URL 时,HTTP 方法始终为 GET。由于您的应用程序中没有任何 GET 映射,因此您会收到错误。
如果您没有错误映射 (/error) 的处理程序,您会在浏览器上收到白标签错误。
您需要GET映射来加载singers.html文件,否则您会收到错误。