Spring Boot Thymeleaf Ajax呼叫

时间:2019-02-28 15:25:37

标签: ajax spring-boot thymeleaf

我尝试从Ajax请求中调用Spring Boot控制器:

 $('#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 :(得分:1)

如果要返回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);
}