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.

Respuestas a la pregunta(3)

Su respuesta a la pregunta