我有POST和GET方法,但是当我隐藏get方法时为什么会发生错误?(post方法应该运行直到页面被分派到GET)

问题描述 投票:0回答:1

我是 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>

请忽略我正在使用的变量和文件名

spring spring-boot spring-mvc spring-thymeleaf
1个回答
0
投票

当您在浏览器中打开 URL 时,HTTP 方法始终为 GET。由于您的应用程序中没有任何 GET 映射,因此您会收到错误。

如果您没有错误映射 (/error) 的处理程序,您会在浏览器上收到白标签错误。

您需要GET映射来加载singers.html文件,否则您会收到错误。

© www.soinside.com 2019 - 2024. All rights reserved.