我得到了这个index.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="ISO-8859-1">
<title>Store</title>
</head>
<body>
<form action="#" th:action="@{/redirectToAddProd}" method="post">
<input type="submit" value="Submit" />
</form>
</body>
</html>
我得到了这个StoreController.java
@Controller
@RequestMapping("/")
public class StoreController {
@GetMapping("/")
public String index() {
return "index";
}
@GetMapping("/addProduct")
public String addProduct() {
return "addProduct";
}
@PostMapping("/redirectToAddProd")
public String redirectToAddProd() {
return "redirect:/addProduct";
}
}
我的问题是,当我按下提交按钮时,没有任何事情发生(实际上什么都没有),甚至不是404的获取请求。你有解决方案吗? 谢谢
编辑: 我的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>MyStore</display-name>
<servlet>
<servlet-name>store</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/store-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>store</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
编辑:现在我收到了一个新错误。现在按钮做了一些事情,但却给了我错误:
sept. 20, 2017 10:08:30 AM org.springframework.web.servlet.PageNotFound handleHttpRequestMethodNotSupported
AVERTISSEMENT: Request method 'POST' not supported
答案 0 :(得分:1)
Your form should have a method of POST, not GET.
<form action="#" th:action="@{/redirectToAddProd}" method="post">
您的控制器需要注释才能处理发布请求,但您认为合适:
@PostMapping("/redirectToAddProd")
public String redirectToAddProd() {
return "redirect:/addProduct";
}
最后,您可以从控制器顶部删除@RequestMapping("/")
,因为它是多余的,并使用@GetMapping
而不是代码中的较长格式。
您可以在这些类上启用调试日志记录,以帮助您诊断路由问题:
<logger name="org.springframework.web.servlet.handler.AbstractUrlHandlerMapping" level="DEBUG" />
<logger name="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" level="DEBUG" />