Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

986
Vistas
¿Cómo vincular @RequestParam al objeto en Spring MVC?

Quiero hacer una solicitud POST a través de AJAX, y también quiero vincular el objeto de clase completo a la solicitud, y quiero recibir esa solicitud con la anotación @requestParam . Sé que se puede hacer con la anotación @requestBody , pero tengo curiosidad por saber: ¿podemos hacerlo con la anotación @requestParam ?

Un código Ajax:

 var restDTO{ id: 3, name: "hello" } $.ajax({ url: url, type: 'POST', dataType: 'json', contentType: 'application/json', mimeType: 'application/json', data: JSON.stringify({RestDTO : restDTO}), success: function(data) { }

Tengo RestDTO

 Class RestDTO { int id; String name; //getter and setter }

en el controlador

 public String content(@RequestParam RestDTO restDTO){...}

¿Qué debo hacer para ejecutar este código?

¿Qué debo cambiar al enviar datos desde ajax?

¿Necesito cambiar en el servidor para recibir un objeto @requestParam ?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

No puede, porque @RequestParam solo indica que el parámetro de un método debe vincularse al parámetro de una solicitud web. No puede hacer mapeo a objetos. Para usar @RequestParam , debe cambiar la solicitud ajax:

 var restDTO{ id: 3, name: "hello" } $.ajax({ url: url, type: 'POST', data: restDTO, success: function(data){ .... } });

JQuery enviará la solicitud como application/x-www-form-urlencoded y procesará los datos a los parámetros automáticamente. El método de su controlador debería tener el siguiente aspecto:

 @RequestMapping("/url") public String content(@RequestParam Long id, @RequestParam String name){...}

Para asignar automáticamente parámetros a objetos, puede usar la anotación @ModelAttribute :

 @RequestMapping("/url") public String content(@ModelAttribute RestDTO restDTO){...}

En este caso, los nombres en el mapa de JavaScript deben coincidir con los nombres de las propiedades en RestDTO .

En general, @ModelAttribute y @RequestBody se crearon con los mismos propósitos: vincular datos de la solicitud al método (ya sean objetos de tipo primitivo).

Considero que @ModelAttribute es más conveniente cuando trabaja con formularios html y objetos simples. Hay habilidades Spring listas para usar como modelAttribute y path .

A su vez, @RequestBody es más flexible cuando necesita control manual sobre los datos. Además, es más conveniente cuando se trabaja con objetos complejos.

Personalmente, preferiría @RequestBody y json.

over 4 years ago · Santiago Trujillo Denunciar

0

Si está enviando sus datos como parámetros de solicitud clásicos, puede vincular el objeto simplemente omitiendo el @RequestParam , por lo que

 public String content(RestDTO restDTO){...}

Si está enviando json , debe usar @RequestBody .

Si por alguna razón insiste en @RequestParam , tenga en cuenta que puede vincular varios valores en un mapa, por lo que

 public String content(@RequestParam Map<String, String> restDTO){...}

Del documento @RequestParam

Si el parámetro del método es Map o MultiValueMap y no se especifica un nombre de parámetro, el parámetro de mapa se completa con todos los nombres y valores de los parámetros de solicitud.

over 4 years ago · Santiago Trujillo Denunciar

0

En spring web tienes estas anotaciones:

RequestParam: se utiliza para obtener parámetros (/path?name=)

PathVariable: se utiliza para parámetros de ruta (/ruta/{nombre})

RequestBody: se utiliza para el cuerpo de publicación/colocación/parche, etc.

RequestHeader - para encabezados

Por lo tanto, no puede usar RequestParam para publicar parámetros, no importa si json o no

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda