En Spring MVC (Estoy trabajando con 3.0.2), dos métodos HTTP son siempre (o sobre todo como parece a mí) reservada (es decir, asignada a los controladores apropiados) que son GET and POST como¿Cómo se manejan las solicitudes de Ajax en Spring MVC?
@RequestMapping(method=RequestMethod.GET)
public String showForm(Map model)
{
//Usually retrieve data from the database when the page is loaded.
return "admin_side/Temp";
}
El método anterior se invoca cuando se realiza una solicitud GET.
@RequestMapping(method=RequestMethod.POST)
public String onSubmit(@ModelAttribute("tempBean") @Valid TempBean tempBean, BindingResult error, Map model, HttpServletRequest request, HttpServletResponse response)
{
//Perform some basic operations with the database like insert, update or delete when the form is submitted (by clicking a submit button or so).
return "admin_side/Temp";
}
El método anterior se invoca cuando se realiza una solicitud POST. Suponiendo que el controlador de primavera está designado con la anotación @RequestMapping(value="admin_side/Temp")
.
Ahora, ¿qué ocurre si necesito usar Ajax y necesito realizar una funcionalidad diferente a la de los métodos anteriores? No puedo manejar otro método con el método GET ni con el método POST porque ya hay mapas asignados (ambos métodos HTTP, GET y POST están reservados para manejar los métodos showForm()
y onSubmit()
, respectivamente).
Por el bien de la demostración, he utilizado el enfoque method=RequestMethod.PUT
con el Ajax como
@RequestMapping(method=RequestMethod.PUT)
public @ResponseBody String getStateList(@ModelAttribute("tempBean") @Valid TempBean tempBean, BindingResult error, HttpServletRequest request, HttpServletResponse response)
{
return "Message";
}
y funcionó como se esperaba, pero me sentí que debería no ser la mejor solución. ¿Cómo manejas las solicitudes de Ajax en Spring MVC, si tienes ese escenario (en realidad, parece ser bastante habitual para mí)? ¿Debo (siempre) usar RequestMethod.PUT
? (¿Cuál es el mejor método HTTP para Ajax en Spring?)
¿Hay alguna forma de asignar más de un método con el mismo método HTTP en el mismo controlador (una respuesta obvia debería ser no)? De nuevo, ¿qué enfoque utilizas cuando necesitas trabajar con Ajax en Spring MVC? Espero que sigas lo que quiero decir! Es bastante difícil para mí expresar que mi inglés está en la etapa inicial.
Gracias! Lo hice usando una URL diferente. Ahora, necesito recuperar datos del controlador Spring usando Ajax (generalmente una 'List >'). No lo sé ahora, pero Spring MVC 3.0.2 debería ser compatible con algún mecanismo como JSON. ¿Sabes sobre eso? Quiero decir, ¿tienes algunos enlaces, si usaste esas cosas en Spring MVC? Puede rechazar mi solicitud, ya que no es la pregunta original. Gracias. – Tiny
@Tiny aquí hay un ejemplo usando la biblioteca de Jackson: http://www.mkyong.com/spring-mvc/spring-3-mvc-and-json-example/ – toniedzwiedz