2010-09-04 4 views
0

я следующий вызов в моей JavaScript:Как вы обрабатываете вызов Ajax.Request в приложении Spring MVC (3.0)?

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), чтобы справиться с этим?

ответ

5
@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 является equvallent к 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 documentation

+0

Brilliant! И если мне нужно написать ответ на страницу, заменив некоторый HTML, могу ли я сделать это с помощью метода checkFirstLast()? О, подождите, это то, что вы подразумеваете под @ResponseBody? – Bowe

+0

@ Посмотрите мое обновление об этом. – Bozho

+0

@Bozho: Не будет ли вызов метода write() на новую HTML-страницу или он позволит мне заменить элемент на существующей странице без обновления страницы? У меня есть текстовый элемент на странице, который я бы хотел обновить с помощью вычисления, которое я бы выполнил в методе checkFirstLast(), но без обновления страницы. – Bowe

Смежные вопросы