getAjaxerror 即使加了 @ResponseBody 注解仍然报 TemplateInputException 异常

来源:7-3 SpringBoot配置全局的异常捕获 - 同时兼容web与ajax

逍遥明月

2018-04-10 19:10

org.thymeleaf.exceptions.TemplateInputException: Error resolving template "err/getAjaxerror", template might not exist or might not be accessible by any of the configured Template Resolvers

	@RequestMapping("getAjaxerror")
	@ResponseBody
	public IMoocJSONResult getAjaxerror() {
		int a = 1 / 0;
		int b = a;
		return IMoocJSONResult.ok();
	}


写回答 关注

3回答

  • tyx_少
    2019-01-02 22:04:08

    @RestControllerAdvice

  • 慕工程2216767
    2018-05-17 17:39:37

    你在后端接口添加@RequestBody是没有用的,因为他不会返回你的

    return IMoocJSONResult.ok();这个结果。

    在执行方法体里的int a = 1 0;的时候会被异常捕获机制捕获

    在统一处理异常的代码里,已经确定了返回格式为:

    @ControllerAdvice

    这是老师的代码:

    https://img2.mukewang.com/5afd4b970001341d10760224.jpg

    返回的格式不是JSON,使用的返回体的工具类只是对结果的封装,所以会报错,你会发现ajax处理返回请求的时候弹出的alert是:

    alert("error");

    是这一部分的https://img.mukewang.com/5afd4c9f0001357f08640656.jpg

    在前一节没有将异常处理统一的时候,单独处理ajax请求时,弹出的alert是success块中:

    alert("发生异常"+data.msg);

    是这一部分的:

    https://img4.mukewang.com/5afd4cf70001041609320676.jpg

    最后的报错的原因还是统一异常处类中类头定义的

    @ControllerAdvice

    的原因

  • 大叔_fighting
    2018-04-10 20:05:50

    /getAjaxerror

    逍遥明月

    开始就是这么写的,没用。

    2018-04-10 21:31:33

    共 1 条回复 >

SpringBoot开发常用技术整合

SpringBoot 极简开发的框架整合利器

102171 学习 · 508 问题

查看课程

相似问题