2010-07-26 5 views
14

J'essaie @RequestMapping(value = "/test", method = RequestMethod.POST) mais est erreurPourquoi la méthode de demande SpringMVC 'GET' n'est pas supportée?

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> 

entrée I est Brower soumettre botton erreur

état HTTP 405 - Méthode de demande 'GET' Type non pris en charge Statut rapport

un message Méthode de requête 'GET' non pris en charge

Description La méthode HTTP spécifiée n'est pas autorisé pour la demande ressource (Demande de méthode 'GET' pas pris en charge).

+1

Voyez-vous le message du journal dans la méthode de bienvenue()? – naikus

+0

non je peux voir le journal – EdwardLau

+0

Je ne suis toujours pas clair sur la façon de résoudre ce problème, il n'y a pas de bonne réponse ici. Personne n'a expliqué pourquoi nous ne pouvons pas faire RequestMethod.POST. Quelqu'un peut-il faire un suivi? Je ne comprends aucun des commentaires. –

Répondre

10

changement

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

Pour

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

Pourquoi 'method = RequestMethod.POST' ne fonctionne-t-il pas? La méthode de formulaire est POST et l'URL de l'action est/test, donc j'aurais pensé que ça marcherait. –

+1

@WebUser c'est un mythe, certains disent que tomcat le désactive par défaut, donc ils doivent appliquer un filtre dans web.xml mais si un dev fait une API avec framework SPRING Boot, même aujourd'hui en 2016/mars il donne erreur, mais Using GET fonctionne propre et parfait dans la barre d'adresse.! La réponse serait que l'on doit faire le panneau entier puis écrire les appels Ajax pour supprimer/mettre/poste au travail. –

15

method = POST fonctionnera si vous 'post' un formulaire à l'URL/test. Si vous tapez une URL dans la barre d'adresse d'un navigateur et appuyez sur Entrée, c'est toujours une demande GET, vous devez donc spécifier une requête POST.

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

+0

Merci Napster +1! – Shraddha

+0

C'est de loin l'explication la plus claire de la raison pour laquelle mon API Spring ne donne pas de 'GET' lorsque j'utilise RequestMethod.DELETE dans mon Controller. –

0

Je résolu cette erreur en incluant un get et demande de poste dans mon contrôleur: method = {RequestMethod.POST, RequestMethod.GET}

Questions connexes