gpt4 book ai didi

java - Spring Boot - POST 请求方法无效但 GET 有效

转载 作者:行者123 更新时间:2023-11-30 06:55:32 26 4
gpt4 key购买 nike

我现在正在学习 Spring Boot,我写了一个小应用程序。该应用程序具有此 Controller :

@Controller
@RequestMapping("/")
public class ApplicationController {

@RequestMapping(value="/account", method = RequestMethod.POST)
public String getAccountVo(ModelMap model) {
AccountVO vo = new AccountVO();
vo.setAccountNo("0102356");
vo.setAccountHolderName("Dinesh");

model.addAttribute("acc", vo);

return "account";
}
}

... 页面( View )是:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Account Details</title>
</head>
<body>
<form>
Account number <input type="text" name="acctNo" value="${acc.getAccountNo()}"><br>
Account Holder Name <input type="text" name="name" value="${acc.getAccountHolderName()}"><br>
</form>
</body>
</html>

当我运行应用程序时,我得到了 HTTP Status 405 消息 Request method 'GET' not supported。但是,当我将 @RequestMapping 注释中的方法更改为 method=RequestMethod.GET 时,我得到了预期的页面。

为什么会这样?

最佳答案

@RequestMapping(value="/account", method = RequestMethod.POST)

这意味着 getAccountVo 方法处理程序负责 /account 端点上的 POST 请求。因此,当您向 /account 端点发出 GET 请求时,由于您没有定义任何方法处理程序来处理该请求,Spring 会提示 405 Method Not Supported.

如果你的意图是有一个表单处理工作流,一个典型的方法是在 /account 端点上定义两个方法处理程序:一个用于显示表单,另一个用于处理提交的表单,有点像这个:

@Controller
@RequestMapping("/")
public class ApplicationController {

@RequestMapping(value="/account", method = RequestMethod.GET)
public String displayAccountForm(...) {
// do whatever suits your requirements

return "account";
}

@RequestMapping(value="/account", method = RequestMethod.POST)
public String handleSubmittedForm(...) {
// do whatever suits your requirements

return "successPage";
}
}

关于java - Spring Boot - POST 请求方法无效但 GET 有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35244698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com