Pasar datos en el cuerpo de una solicitud DELETE
Tengo dos métodos de controlador Spring MVC. Ambos reciben los mismos datos en el cuerpo de la solicitud (en el formato de un HTLMPOST
formar:version=3&name=product1&id=2
), pero un método manejaPUT
solicitudes y otroDELETE
:
@RequestMapping(value = "ajax/products/{id}", method = RequestMethod.PUT)
@ResponseBody
public MyResponse updateProduct(Product product, @PathVariable("id") int productId) {
//...
}
@RequestMapping(value = "ajax/products/{id}", method = RequestMethod.DELETE)
@ResponseBody
public MyResponse updateProduct(Product product, @PathVariable("id") int productId) {
//...
}
En el primer método, todos los campos delproduct
argumento correctamente inicializado. En el segundo, solo elid
el campo se inicializa. Otros campos sonnull
o 0. (id
es, probablemente, inicializado debido a laid
variable de ruta).
Puedo ver que elHttpServletRequest
El objeto contiene valores para todos los campos en el cuerpo de la solicitud (version=3&name=product1&id=2
) Simplemente no están asignados a los campos de laproduct
parámetro.
¿Cómo puedo hacer que el segundo método funcione?
También intenté usar el@RequestParam
parámetros anotados En el método que manejaPUT
solicitudes, funciona. En elDELETE
método, obtengo una excepción:org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'version' is not present
.
Necesito pasar datos en el cuerpo deDELETE
solicita porque los datos contienen una versión de fila que se utiliza para el bloqueo optimista.