"圆形视图路径"使用@PathVariable的简单spring-boot应用程序

时间:2015-12-27 04:00:12

标签: spring spring-mvc

我有一个简单的spring-boot应用程序,可以提供静态内容。我有一个index.html页面和/ src / main / resources / public中的一些js / css。我有一个简单的控制器如下:

@Controller
public class PublicController {
    @RequestMapping(value="/", method=RequestMethod.GET)
    public String index() {
        return "index";
    }
}

按预期工作。我运行curl http://localhost:8080/,它会传递我的HTML。

现在我想修改控制器以获取路径变量:

// ...
@RequestMapping(value="/{word}", method=RequestMapping.GET)
public String index(@PathVariable("word") String word) {
    return "index";
}

但是现在我得到一个500长的"圆形视图路径"异常。

我认为正在发生的事情是视图解析器看到我的控制器可以处理" / index",并意识到它不会很好地结束。

是否可以告诉视图解析器为静态资源赋予优先级?

1 个答案:

答案 0 :(得分:1)

当您使用Thymeleaf并声明声明具有特定前缀和后缀的ThymeleafViewResolverServletContextTemplateResolver时,它会以不同方式构建View,为其提供类似<的路径/ p>

WEB-INF/static/index.html

ThymeleafView个实例使用ServletContext

找到相对于ServletContextResourceResolver路径的文件
templateInputStream = resourceResolver.getResourceAsStream(templateProcessingParameters, resourceName);

最终

return servletContext.getResourceAsStream(resourceName);

这将获得相对于ServletContext路径的资源。然后,它可以使用TemplateEngine生成HTML。这里无法发生无限循环。