Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc Spring MVC viewController haven';根据模板引擎的不同,不存在相同的行为_Spring Mvc_Spring Boot_Freemarker_Thymeleaf - Fatal编程技术网

Spring mvc Spring MVC viewController haven';根据模板引擎的不同,不存在相同的行为

Spring mvc Spring MVC viewController haven';根据模板引擎的不同,不存在相同的行为,spring-mvc,spring-boot,freemarker,thymeleaf,Spring Mvc,Spring Boot,Freemarker,Thymeleaf,我通过SpringBootStarters(1.3.2)使用SpringMVC,我看到了我使用的模板引擎的行为差异 @Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) { // template file r

我通过SpringBootStarters(1.3.2)使用SpringMVC,我看到了我使用的模板引擎的行为差异

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        // template file 
        registry.addViewController("/index").setViewName("index");
        // static file
        registry.addViewController("/login").setViewName("login.html");
    }
}
如果我使用
Freemarker
作为模板引擎,Spring mvc将从
resources/static
获取
/login
的文件,并在
resources/templates
中获取
/index


然而,如果我使用
Thymeleaf
作为模板引擎,Spring将从
resources/templates
获取所有文件(
login
index
),据我所知,这些路径取决于应用程序属性。默认情况下:

#for freemaker
spring.freemarker.template-loader-path=classpath:/templates/

#for thymeleaf
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
您可以找到的常用应用程序属性的完整列表

视图控制器不更改行为。当您输入url时,Spring将查找具有适当请求映射的Controller或ViewController方法。如果找到方法,Spring将调用它。之后,控制器的方法将视图名称返回为字符串,Spring请求名为
viewsolver
的特殊bean来查找具有此名称的视图

由于每个模板引擎都有自己的
viewsolver
,并且任何
viewsolver
都有自己的设置(正如我上面所说的),因此它们在不同的位置查找模板


例如,您使用的是Thymeleaf,输入的url类似于:
localhost:8080/index
。首先,spring将找到使用
索引映射的控制器方法或视图控制器。之后,控制器将返回字符串
索引
。Spring将要求Teamleaf视图解析器查找此视图。根据默认设置,视图解析程序将在视图名称之前添加
classpath:/templates/
,在视图名称之后添加
.html
,之后将尝试使用此名称打开文件。

我不覆盖任何属性。我正在询问viewController的行为,当我更改模板引擎时,viewController的行为发生了变化。