Как вы обрабатываете вызов Ajax.Request в приложении Spring MVC (3.0)? - PullRequest
0 голосов
/ 04 сентября 2010

У меня в JavaScript следующий вызов:

new Ajax.Request('/orders/check_first_last/A15Z2W2', 
{asynchronous:true, evalScripts:true, 
parameters:{first:$('input_initial').value, 
last:$('input_final').value, 
order_quantity:$('input_quantity').value}});

Что мне нужно сделать, чтобы Spring MVC (3.0) справился с этим?

1 Ответ

5 голосов
/ 04 сентября 2010
@Controller
@RequestMapping("/orders")
public OrderController {

   @RequestMapping("/check_first_last/{code}")
   @ResponseBody
   public Result checkFirstLast(@PathVariable String code, 
        @RequestParam int first, 
        @RequestParam int last, 
        @RequestParam("order_quantity") int orderQuantity)  {

       // fetch the result
       Result result = fetchResult(...);
       return result;
  }
}

Несколько заметок:

  • @PathVariable возвращает переменную, определенную {..} в отображении запроса
  • @RequestParam эквивалентно request.getParameter(..). Если значение не указано, предполагается имя параметра (first, last). В противном случае значение (order_quantity) получается из запроса.
  • @ResponseBody означает, что вам нужно, чтобы Джексон или JAXB присутствовали на пути к классам, а <mvc:annotation-driven> в конфигурации xml. Результат будет представлен в формате JSON или XML соответственно.

Если вы хотите написать HTML в ответе напрямую, у вас есть два варианта:

  • изменить тип возвращаемого значения на String и вернуть HTML как String переменную
  • добавить параметр HttpServletResponse response в метод и использовать метод response.getWriter().write(..) для записи в ответ

Ресурс: Документация Spring MVC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...