2010-07-26 14 views
14

I tratando @RequestMapping(value = "/test", method = RequestMethod.POST) pero es error¿Por qué no se admite el método de solicitud SpringMVC 'GET'?

Código se

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

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

y springmvc.xml es

index.jsp se

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

entrada I presentar Brower Botton es el error

de estado HTTP 405 - Método de petición 'GET' no soportado informe tipo de estado

mensaje Método de petición 'Get' no apoyaron

Descripción El método HTTP especificado no está permitido para el pedido de recursos (El método de solicitud 'GET' no es compatible con ).

+1

¿Ves el mensaje de registro en el método de inicio()? – naikus

+0

no Puedo ver el registro – EdwardLau

+0

Todavía no tengo claro cómo resolverlo, no hay una buena respuesta aquí. Nadie explicó por qué no podemos hacer RequestMethod.POST. ¿Alguien puede seguir? No entiendo ninguno de los comentarios. –

Respuesta

10

Cambio

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

Para

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

¿Por qué 'method = RequestMethod.POST' no funciona? El método de formulario es POST y la acción URL es/prueba, así que pensé que funcionaría. –

+1

@WebUser es un mito, algunos dicen que tomcat lo desactiva de manera predeterminada, por lo que tienen que aplicar filter en web.xml, pero ¿qué ocurre si un desarrollador está haciendo una API con SPRING Boot framework, incluso hoy en 2016/March está dando el mismo error, pero el uso de GET funciona limpio y perfecto en la barra de direcciones.! La respuesta sería que uno tiene que hacer un panel completo y luego escribir llamadas Ajax para Eliminar/Poner/Publicar para trabajar. –

15

method = POST funcionará si 'post' una forma a la url/prueba.

si escribe una URL en la barra de direcciones de un navegador y pulsa enter, siempre es una solicitud GET, por lo que debe especificar la solicitud POST.

Google para HTTP GET y HTTP POST (hay varios otros como PUT DELETE). Todos ellos tienen su propio significado.

+0

Gracias Napster +1! – Shraddha

+0

esta es de lejos la explicación más clara de por qué mi Spring API da 'GET' no compatible cuando estoy usando RequestMethod.DELETE en mi Controller.! –

0

He resuelto este error mediante la inclusión de un encuentro y la solicitud posterior en mi controlador: method = {RequestMethod.POST, RequestMethod.GET}

Cuestiones relacionadas