2017-09-19 54 views
0

我得到这个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 

回答

1

Your form should have a method of POST, not GET.

<form action="#" th:action="@{/redirectToAddProd}" method="post">

而且您的控制器必须要进行注释处理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" />

+0

你好@bphilipnyc抱歉,但我不知道在哪里使用注释GetMapping。我做了所有其他更改,你问我,但现在我有这个错误信息:不支持请求方法'POST'感谢您的答案 –

+0

sept。 20,2017 9:48:06 AM org.springframework.web.servlet.PageNotFound handleHttpRequestMethodNotSupported AVERTISSEMENT:不支持请求方法'POST' –

+0

哦,我明白你在说的GetMapping。感谢您的提示。 –