Thymeleaf 未加载模板
Thymeleaf not loading template
我正在使用 Spring 和 Thymeleaf。感谢 xerx593,我能够让它工作,所以我更新了这个问题以显示工作代码。
这是我的申请class
package com.propfinancing.www;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import nz.net.ultraq.thymeleaf.layoutdialect.LayoutDialect;
@Controller
@SpringBootApplication
public class PfWebApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(PfWebApplication.class, args);
}
@Bean
public LayoutDialect layoutDialect() {
return new LayoutDialect();
}
@GetMapping("/page1.html")
public String page1() {
return "page1";
}
}
接下来,我在 src/main/resources/templates/layout 中创建一个 layout.html 文件。html
<!DOCTYPE html>
<html lang="en" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<body>
This is the layout template
<div layout:fragment="content">
<p>This is were the content will go</p>
</div>
</body>
</html>
还有鳍
盟友,我创建了 /ser/main/resources/templates/page1.html 来使用模板:
<!DOCTYPE html>
<html lang="en"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout}">
<body>
<div layout:fragment="content">
This is the content of page 1.
</div>
</body>
</html>
当我转到 http://dev.propfinancing.com/www/page1.html 时,它给了我预期的模板驱动输出。
谢谢!
尼尔
最明显的错误:
-
I created a simple html page called page1.html
in my src/main/resources/static
directory
(这对于 (spring-web) 静态内容来说非常棒,但是...)
-
And finally, I updated my page1.html
to use the template...
更新 还不够,您还必须移动 到配置的模板位置!因此将文件移动到 src/main/resources/templates/
(默认位置,发出 相同 浏览器请求,)将 hopefully/probably 产生所需的结果(, 或至少抛出异常 )。
简而言之:src/main/resources/static
目录不适用于模板! (它仍然可以配置,但这将是非常 strange/hacky/bunch 充满“副作用”!?)。
好的,404,可以(简单地)用以下方法修复:
@Controller // !
@SpringBootApplication
public class ThymeleafTestApplication {
public static void main(String[] args) {
SpringApplication.run(ThymeleafTestApplication.class, args);
}
@GetMapping("/page1.html") // !!
public String page1() {
return "page1"; // returning the view name
}
// ...
}
即通过为此“视图”提供“控制器”。
或通过配置:
@SpringBootApplication
public class PfWebApplication // extends ...
implements WebMvcConfigurer {
@Override
public void addViewControllers (ViewControllerRegistry registry) {
ViewControllerRegistration r = registry.addViewController("/page1.html");
r.setViewName("page1");
// r.set...
}
...
一件重要的事情是:
@Bean
public LayoutDialect layoutDialect() {
return new LayoutDialect();
}
是“自动配置”方法,它为我们提供了“所有 spring(引导)魔法”。
鉴于:
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addDialect(new LayoutDialect());
return templateEngine;
}
..是“DIY”方法,我们必须调整(例如 spring-boot does)。
链接:
我正在使用 Spring 和 Thymeleaf。感谢 xerx593,我能够让它工作,所以我更新了这个问题以显示工作代码。
这是我的申请class
package com.propfinancing.www;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import nz.net.ultraq.thymeleaf.layoutdialect.LayoutDialect;
@Controller
@SpringBootApplication
public class PfWebApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(PfWebApplication.class, args);
}
@Bean
public LayoutDialect layoutDialect() {
return new LayoutDialect();
}
@GetMapping("/page1.html")
public String page1() {
return "page1";
}
}
接下来,我在 src/main/resources/templates/layout 中创建一个 layout.html 文件。html
<!DOCTYPE html>
<html lang="en" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<body>
This is the layout template
<div layout:fragment="content">
<p>This is were the content will go</p>
</div>
</body>
</html>
还有鳍 盟友,我创建了 /ser/main/resources/templates/page1.html 来使用模板:
<!DOCTYPE html>
<html lang="en"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout}">
<body>
<div layout:fragment="content">
This is the content of page 1.
</div>
</body>
</html>
当我转到 http://dev.propfinancing.com/www/page1.html 时,它给了我预期的模板驱动输出。
谢谢! 尼尔
最明显的错误:
-
I created a simple html page called
page1.html
in mysrc/main/resources/static
directory(这对于 (spring-web) 静态内容来说非常棒,但是...)
-
And finally, I updated my
page1.html
to use the template...
更新 还不够,您还必须移动 到配置的模板位置!因此将文件移动到 src/main/resources/templates/
(默认位置,发出 相同 浏览器请求,)将 hopefully/probably 产生所需的结果(, 或至少抛出异常 )。
简而言之:src/main/resources/static
目录不适用于模板! (它仍然可以配置,但这将是非常 strange/hacky/bunch 充满“副作用”!?)。
好的,404,可以(简单地)用以下方法修复:
@Controller // !
@SpringBootApplication
public class ThymeleafTestApplication {
public static void main(String[] args) {
SpringApplication.run(ThymeleafTestApplication.class, args);
}
@GetMapping("/page1.html") // !!
public String page1() {
return "page1"; // returning the view name
}
// ...
}
即通过为此“视图”提供“控制器”。
或通过配置:
@SpringBootApplication
public class PfWebApplication // extends ...
implements WebMvcConfigurer {
@Override
public void addViewControllers (ViewControllerRegistry registry) {
ViewControllerRegistration r = registry.addViewController("/page1.html");
r.setViewName("page1");
// r.set...
}
...
一件重要的事情是:
@Bean
public LayoutDialect layoutDialect() {
return new LayoutDialect();
}
是“自动配置”方法,它为我们提供了“所有 spring(引导)魔法”。
鉴于:
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addDialect(new LayoutDialect());
return templateEngine;
}
..是“DIY”方法,我们必须调整(例如 spring-boot does)。
链接: