Circular view path问题

    xiaoxiao2023-11-27  165

    错误信息

    Circular view path [iframe-1]: would dispatch back to the current handler URL [/study/iframe-1] again

    运行环境

    springboot项目,没有配置模板引擎

    代码

    package me.study.com.springboot.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class NotRestController { @GetMapping(value = {"/iframe-1"}) public String iframe1(String name, @RequestParam String age){ System.out.println(name); System.out.println(age); return "iframe-1"; } }

    原因猜测

    如果配置了模板引擎,返回的字符串应该是逻辑视图名,但这里没有配置模板引擎,所以返回的字符串还是作为URL,并根据URL来查找映射的HandlerMethod,所以又返回到iframe1这个方法了

    改造一下

    package me.study.com.springboot.controller; @Controller public class NotRestController { @GetMapping(value = {"/iframe-1.html"}) public String iframe1(String name, @RequestParam String age){ System.out.println(name); System.out.println(age); return "iframe-2"; } @GetMapping(value = {"/iframe-2"}) public String iframe2(String name){ System.out.println(name); return "iframe-1"; } }

    context path为/study,端口为80,访问localhost/study/iframe-1.html?name=luckee&age=18,控制台打印了

    luckee 18 luckee

    浏览器显示404错误页面,这说明了以下几点:

    当一个URL同时匹配到一个HandlerMethod和一个静态资源的时候,最终执行的是HandlerMethod而不是返回静态资源HandlerMethod的参数加不加@RequestParam都行springboot的静态资源默认放在/resource/static下面如果没有配置模板引擎,HandlerMethod返回的字符串会作为转发的URL,去重新匹配HandlerMethod,所以request是共享的,从打印了两次luckee可以看得出来

    一个疑问

    使用ajax的时候,请求的URL一般都是返回数据(json或xml或其他格式的),如果URL指向的是一个完整的页面会是怎样的效果,是否可以将返回的页面当做一个iframe嵌入当前页面,有待测验

    最新回复(0)