Весенний ботинок Thymeleaf Ajax Call - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь вызвать контроллер Spring Boot из запроса Ajax:

 $('#female').click(function(){
   $('#analysisTable').DataTable( {
     "ajax": '/analyse/female'
   });
 });

Идея, стоящая за этим, заключается в загрузке списка в таблицу данных js.Контроллер выглядит так:

@GetMapping("/analyse/female")
public List<GenderAnalysis> analysisByFemale(final Model model) {
    final List<GenderAnalysis> result = analyseDao.getAnalysisByGender(AnalyseDAO.Gender.Female);
    return result;
}

Контроллер работает нормально.Но я получаю ошибку шаблона Thymeleaf.Каждый ответ будет обрабатываться через ThymeleafLayoutInterceptor и загружать «нормальные» (не ajax) запросы в шаблон.

Erorr выглядит следующим образом:

org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/analyse/female.html]")

Я знаю, что нет ресурса female.html, и у меня даже его не будет.Просто подайте необработанный список для вызова ajax.

Я не уверен, как работать с Spring Boot + Thymeleaf + Ajax даже с шаблонами.Может ли это быть проблема обработки с перехватчиком?Что я могу сделать?Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 28 февраля 2019

Если вы хотите вернуть JSON, а не шаблон Thymeleaf, вам следует либо:

1) Объявить контроллер как @RestController, а не просто @Controller.Это повлияет на все аннотации @GetMapping, @PostMapping и @RequestMapping в классе контроллера.

или

2) Объявите метод как @ResponseBody в дополнение к @GetMapping.

@GetMapping("/analyse/female")
@ResponseBody
public List<GenderAnalysis> analysisByFemale() {
    return analyseDao.getAnalysisByGender(AnalyseDAO.Gender.Female);
}
...