2010-07-26 54 views
14

我想@RequestMapping(value = "/test", method = RequestMethod.POST)但錯誤爲什麼不支持SpringMVC請求方法'GET'?

守則

@Controller 
public class HelloWordController { 
private Logger logger = LoggerFactory.getLogger(HelloWordController.class); 

@RequestMapping(value = "/test", method = RequestMethod.POST) 
public String welcome() { 
    logger.info("Spring params is welcome"); 
    return "/WEB-INF/jsp/welcome"; 
} 

} 

的web.xml是

<servlet> 
<description>This is Spring MVC DispatcherServlet</description> 
<servlet-name>SpringMVC DispatchServlet</servlet-name> 
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
<init-param> 
    <description>SpringContext</description> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath*:springmvc.xml</param-value> 
</init-param> 
<load-on-startup>1</load-on-startup> 

<servlet-mapping> 
<servlet-name>SpringMVC DispatchServlet</servlet-name> 
<url-pattern>/</url-pattern> 

和springmvc.xml是

的index.jsp是

<form action="<%=request.getContextPath() %>/test" method="post"> 
<input type="submit" value="submit"> 
</form> 

我輸入提交鈕布勞爾是錯誤

HTTP狀態405 - 請求方法「GET」 不支持的類型的狀態報告

消息請求方法「GET」不 支持

描述指定的HTTP方法 不允許針對所請求的 資源(請求方法'GET'不支持 )。

+1

你的歡迎()方法查看日誌信息? – naikus 2010-07-26 11:28:01

+0

不,我可以看到日誌 – EdwardLau 2010-07-26 13:18:57

+0

我還不清楚如何解決這個問題,這裏沒有好的答案。沒有人解釋爲什麼我們不能做RequestMethod.POST。有人可以跟進嗎?我不明白任何評論。 – 2016-10-17 20:38:22

回答

10

變化

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

@RequestMapping(value = "/test", method = RequestMethod.GET) 
+7

爲什麼'method = RequestMethod.POST'不起作用?表單方法是POST,動作URL是/ test,所以我會認爲它會起作用。 – 2012-02-22 05:03:56

+1

@WebUser這是一個神話,有人說默認情況下,tomcat會禁用它,所以他們必須在web.xml中應用過濾器,但是如果開發人員使用SPRING引導框架製作API,即使今天在2016年/ 3月,它也會給出相同的錯誤,但使用GET在地址欄中工作乾淨且完美。 答案是,必須讓整個面板,然後寫入Ajax調用刪除/放置/發佈工作。 – 2016-03-10 07:50:03

15

method = POST會工作,如果你 '後' 形式的URL /測試。

如果您在瀏覽器的地址欄中鍵入網址並按回車,則始終爲GET請求,因此您必須指定POST請求。

Google對於HTTP GETHTTP POST(還有其他幾個像PUT DELETE)。他們都有自己的意思。

+0

謝謝Napster +1! – Shraddha 2013-08-01 11:46:05

+0

這是迄今爲止我在我的Controller中使用RequestMethod.DELETE時不支持Spring API的原因的最清晰的解釋。 – 2016-03-10 07:40:52

0

我通過在我的控制器中的GET和POST請求解決了這個錯誤: 方法= {RequestMethod.POST,RequestMethod.GET}

相關問題