web-dev-qa-db-fra.com

Pourquoi la méthode Spring GET Request 'GET' n'est pas prise en charge?

J'essaie @RequestMapping(value = "/test", method = RequestMethod.POST) mais c'est une erreur

Code est 

 @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 est

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

et springmvc.xml est

index.jsp est

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

J'ai entré soumettre botton brower est une erreur 

Statut HTTP 405 - Méthode de requête 'GET' type non pris en charge Rapport d'état

message Méthode de requête 'GET' not prise en charge

description La méthode HTTP spécifiée n'est pas autorisé pour le demandé ressource (la méthode de requête 'GET' n'est pas prise en charge).

15
EdwardLau

Changement 

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

À

@RequestMapping(value = "/test", method = RequestMethod.GET)
10
Bik

method = POST fonctionnera si vous postez un formulaire dans l'url/test.

si vous tapez une URL dans la barre d'adresse d'un navigateur et appuyez sur Entrée, il s'agit toujours d'une requête GET. Vous devez donc spécifier la requête POST.

Google pour HTTP GET et HTTP POST (il en existe plusieurs autres comme PUT DELETE). Ils ont tous leur propre sens.

18
Tejas

J'ai aussi eu le même problème. Je l'ai changé en suivant et cela a fonctionné. 

Java: 

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

Code HTML:

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

Par défaut, si vous ne spécifiez pas la méthode http dans un formulaire, il utilise GET. Pour utiliser la méthode POST, vous devez l'indiquer spécifiquement. 

J'espère que cela t'aides. 

0
Dulith De Costa

J'ai résolu cette erreur en incluant une demande get et post dans mon contrôleur: Method = {RequestMethod.POST, RequestMethod.GET}

0
Gavin James Beere