Невозможно использовать Scala и Spring MVC 3 для возврата JSON - PullRequest
2 голосов
/ 09 октября 2011

Я конвертирую классы контроллера Java Spring в Scala. В Java метод контроллера, который возвратил JSON, был определен следующим образом:

@RequestMapping(value = "/search", method = RequestMethod.GET)
public @ResponseBody String[] searchFoods(@RequestParam("term") String searchTerm, Principal principal) { ... }

Это работает как ожидалось. Тот же метод в Scala выглядит следующим образом:

@RequestMapping(value = Array("/search"), method = Array(RequestMethod.GET))
def searchFoods(@RequestParam("term") searchTerm: String, principal: Principal): java.util.List[String] @ResponseBody = { ... }

Однако каждый раз, когда запрашивается этот путь, я получаю следующее исключение:

2011-10-09 09:06:19.980:WARN::/searchpath/search.html
javax.servlet.ServletException: Could not resolve view with name 'searchpath/search' in servlet with name 'dispatcher'
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1029)

И веб-сервер возвращает ошибку HTTP 500. Можно ли использовать Scala и Spring MVC 3 вместе для возврата JSON?

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

Похоже, я поместил @ResponseBody в неправильном месте.Оно должно появиться до определения метода:

@RequestMapping(value = Array("/search"), method = Array(RequestMethod.GET))
@ResponseBody
def searchFoods(@RequestParam("term") searchTerm: String, principal: Principal): java.util.List[String]  = { ... }

Я пробовал это раньше, но забыл очистить свой проект.После перемещения аннотации в правильное место, а затем очистки и восстановления все снова работало.Спасибо!

0 голосов
/ 09 октября 2011

Похоже, проблема не в JSON, а в разрешении пути. Попробуйте изменить аннотацию метода на:

@RequestMapping(value = Array("/searchpath/search"), method = Array(RequestMethod.GET))

См. эту страницу для полного примера.

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