Solución:
No tiene nada de malo usar @RequestParam
con Multipart
expediente.
La anotación @RequestParam también se puede usar para asociar la parte de una solicitud “multipart / form-data” con un argumento de método que admita los mismos tipos de argumentos de método. La principal diferencia es que cuando el argumento del método no es una cadena, @RequestParam se basa en la conversión de tipos a través de un convertidor registrado o PropertyEditor, mientras que @RequestPart se basa en HttpMessageConverters teniendo en cuenta el encabezado ‘Content-Type’ de la parte de la solicitud. Es probable que @RequestParam se use con campos de formulario de nombre-valor, mientras que @RequestPart es probable que se use con partes que contengan contenido más complejo (por ejemplo, JSON, XML).
Ver http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestPart.html
Se pueden usar ambas anotaciones, sin embargo, puede hacer su elección sobre ellas en función de cómo interpretan los argumentos internamente.
Spring Docs establece la diferencia entre ellos muy claramente:
La principal diferencia es que cuando el argumento del método no es una cadena,
@RequestParam
se basa en la conversión de tipos a través de un convertidor registrado oPropertyEditor
tiempo@RequestPart
se basa enHttpMessageConverters
teniendo en cuenta el encabezado ‘Content-Type’ de la parte de la solicitud.@RequestPara
es probable que se use con campos de formulario de nombre-valor mientras@RequestPart
es probable que se utilice con partes que contengan contenido más complejo (por ejemplo, JSON, XML).