Spring no acepta un parámetro POST a menos que @RequestParam "required = false"

Estoy ejecutando una aplicación Spring 3.1.2. Tengo un servlet RESTful con varios métodos. Los métodos GET están funcionando fantásticamente (@PathVariables coincidencia, las respuestas se han combinado correctamente a JSON o XML en función del encabezado Aceptar, etc.) el 100% del tiempo.

Sin embargo, el método POST simplemente no funciona. Después de horas de jugar con los conversos y todos los demás aspectos de Primavera que pude encontrar (todos los retoques revertidos), lo reduje a larequired campo en@RequestParam. Este es un método de prueba simplificado que he estado usando para investigar:

@RequestMapping (value = "/bogus",
                 method = POST)
public @ResponseBody PassResponse bogus (
            @RequestParam (value = "test", required = false) String test) {
    // Just some handy garbage objects that marshal to JSON/XML
    UserResponse user = new UserResponse ();
    user.setName (test);
    AccountDetail detail = new AccountDetail (user,null);
    return new PassResponse (detail);
}

requerido = falso: Todo funciona (se recibe e interpreta el parámetro). Exactamente como espero que funcione.

requerido = verdadero: (o no especificado, ya que este es el valor predeterminado) Recibo el mensaje constantemente "MissingServletRequestParameterException: el parámetro de cadena requerido 'prueba' no está presente"

Vista lateral del cliente:

requerido = verdadero

Request URL:http://localhost:8080/internal-project/rest/bogus
Request Method:POST
Status Code:400 Bad Request
Request Headersview source
Accept:application/json
Connection:keep-alive
Content-Length:12
Host:localhost:8080
Request Payload
test=LALALAA
Response Headersview source
Connection:close
Content-Length:971
Content-Type:text/html;charset=utf-8
Date:Wed, 24 Oct 2012 18:41:05 GMT
Server:Apache-Coyote/1.1

requerido = falso

Request URL:http://localhost:8080/internal-project/rest/bogus
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:application/json
Connection:keep-alive
Content-Length:12
Host:localhost:8080
Request Payload
test=LALALAA
Response Headersview source
Content-Type:application/json;charset=UTF-8
Date:Wed, 24 Oct 2012 18:44:03 GMT
Server:Apache-Coyote/1.1
Transfer-Encoding:chunked

Es exactamente el mismo conjunto de pruebas que se ejecuta cuando se alternarequired y puedo ver el parámetro que se está pasando. Cuando el parámetro es opcional, Spring lo maneja correctamente.

Si alguien se ha encontrado con esto antes o tiene alguna idea, me encantaría escucharla. Marcar el parámetro requerido como opcional, incluso si funciona, es una autodocumentación terrible, incluso si lo comento. Además, el comportamiento me pone un poco nervioso. Con suerte acabo de joder algo en alguna parte

Respuestas a la pregunta(1)

Su respuesta a la pregunta