解决:javax.servlet.ServletException: Circular view path []: would dispatch back to the current....

报错如下:

在这里插入图片描述

原因:

当没有声明ViewResolver时,spring会注册一个默认的ViewResolver,就是JstlView的实例, 该对象继承自InternalResoureView。
JstlView用来封装JSP或者同一Web应用中的其他资源,它将model对象作为request请求的属性值暴露出来, 并将该请求通过javax.servlet.RequestDispatcher转发到指定的URL.
Spring认为, 这个view的URL是可以用来指定同一web应用中特定资源的,是可以被RequestDispatcher转发的。
也就是说,在页面渲染(render)之前,Spring会试图使用RequestDispatcher来继续转发该请求。

报错地方代码:
@GetMapping("/async")
    public void async(){
        asyncService.executeAsync();
    }

通过原因分析,造成问题有两个因素:

①缺省转发
②缺省返回值
③view和path同名

解决方案如下

①消除缺省转发
②如果是返回数据:则增加返回值 或 添加@ResponseBody注解
③若是返回页面:修改view和path

例如修改为:
	@GetMapping("/async")
    public String async(){
        asyncService.executeAsync();
        return "ok";
    }

    @ResponseBody
    @GetMapping("/async")
    public void async(){
        asyncService.executeAsync();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟空宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值