Tengo un método simple (que se ejecuta en Tomcat 6.0.35) que se ve así:Spring MVC usando @RequestParam con RequestMethod.DELETE en Tomcat 6.0.35
@RequestMapping(value = "/bla/d", method = RequestMethod.DELETE)
@ResponseStatus(HttpStatus.NO_CONTENT)
public void d(@RequestParam String d){
//logic here
}
cuando envío una solicitud DELETE con el post como los parámetros (d = gggg en el cuerpo) recibo una 400 Solicitud incorrecta. Pero si lo cambio a
@RequestMapping(value = "/bla/d", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.NO_CONTENT)
public void d(@RequestParam String d){
//logic here
}
Funciona perfectamente. que estaba usando un Firefox Add-on para probarlo (y Python y RestTemplate de primavera con mismo resultado) así es como el aspecto solicitud con el poste (a es un método de hacer frente pegada nombrado con el parámetro a):
POST /bla/a HTTP/1.1
Host: ~~~~:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 7
Pragma: no-cache
Cache-Control: no-cache
a=asdas
HTTP/1.1 204 No Content
Server: Apache-Coyote/1.1
Date: Tue, 12 Jun 2012 09:29:46 GMT
y eliminar el siguiente aspecto:
DELETE /bla/d HTTP/1.1
Host: ~~~~~:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 7
d=asdas
HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Length: 971
Date: Tue, 12 Jun 2012 09:30:04 GMT
Connection: close
Por favor, ayúdame, puede ser que falte algo estúpido, pero yo no puedo verlo. Mi problema original era enviar una matriz a través de un cuerpo similar a un post con la solicitud DELETE, pero parece que algo más básico es incorrecto.