No olvides que en las ciencias informáticas cualquier problema casi siempere suele tener diversas soluciones, no obstante nosotros te enseñaremos lo más óptimo y eficiente.
Solución:
Él @RequestParam String action
sugiere que hay un parámetro presente dentro de la solicitud con el nombre acción que está ausente en su forma. Usted debe:
- Envíe un parámetro llamado valor p.ej
- Establezca el parámetro requerido en
false
dentro de@RequestParam
p.ej@RequestParam(required=false)
También tuve este problema y mi solución fue diferente, por lo que agrego aquí para cualquiera que tenga un problema similar.
Mi controlador tenía:
@RequestMapping(value = "/setPassword", method = RequestMethod.POST)
public String setPassword(Model model, @RequestParameter SetPassword setPassword)
...
La cuestión era que esto debería ser @ModelAttribute
para el objeto, no @RequestParameter
. El mensaje de error para esto es el mismo que describe en su pregunta.
@RequestMapping(value = "/setPassword", method = RequestMethod.POST)
public String setPassword(Model model, @ModelAttribute SetPassword setPassword)
...
Otra posible causa es tener el orden incorrecto de RequestMapping attributes. Como dice el doctor de primavera:
Un método de controlador @RequestMapping puede tener firmas muy flexibles. Los argumentos de método admitidos y los valores devueltos se describen en la siguiente sección. La mayoría de los argumentos se pueden usar en orden arbitrario con la única excepción de los argumentos BindingResult.. Esto es descrito en la siguiente sección.
Si se desplaza hacia abajo en el documento, verá que BindingResult debe estar inmediatamente después del modelo. attributeya que podemos tener múltiples objetos modelo por solicitud y, por lo tanto, múltiples enlaces
Los parámetros Errors o BindingResult deben seguir el objeto modelo que se vincula inmediatamente, ya que la firma del método puede tener más de un objeto modelo y Spring creará una instancia BindingResult separada para cada uno de ellos, por lo que el siguiente ejemplo no funcionará:
Aquí hay dos ejemplos:
Orden no válido de BindingResult y @ModelAttribute.
@RequestMapping(método = RequestMethod.POST) public String processSubmit(@ModelAttribute(“mascota”) Mascota mascota, modelo de modelo, resultado de BindingResult) … Tenga en cuenta que hay un parámetro de modelo entre Pet y BindingResult. Para que esto funcione, debe reordenar los parámetros de la siguiente manera:
@RequestMapping(método = RequestMethod.POST) public String processSubmit(@ModelAttribute(“mascota”) Mascota mascota, resultado de BindingResult, modelo modelo) …
Si para ti ha resultado de ayuda este post, sería de mucha ayuda si lo compartes con otros juniors de esta forma contrubuyes a dar difusión a nuestro contenido.