我有一个 Spring Boot 应用程序,需要使用 Freemarker 在浏览器中显示 HTML 页面。
我是 Freemarker 的新手,我什至很难显示一个简单的 HTML 页面,而且我不知道为什么它不会显示该页面。
我的模板文件位于 src/main/resources/templates 中,我的 freemarker 配置是:
@Bean
public FreeMarkerConfigurer freeMarkerConfigurer() throws IOException, TemplateException {
FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer();
freeMarkerConfigurer.setTemplateLoaderPath("classpath:/templates");
freeMarkerConfigurer.setDefaultEncoding("UTF-8");
freemarker.template.Configuration configuration = freeMarkerConfigurer.createConfiguration();
configuration.setTagSyntax(freemarker.template.Configuration.SQUARE_BRACKET_TAG_SYNTAX);
configuration.setRecognizeStandardFileExtensions(true);
configuration.setOutputFormat(HTMLOutputFormat.INSTANCE);
freeMarkerConfigurer.setConfiguration(configuration);
return freeMarkerConfigurer;
}
@Bean
public ViewResolver viewResolver() {
FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver();
viewResolver.setCache(false);
viewResolver.setPrefix("");
viewResolver.setSuffix(".ftlh");
viewResolver.setContentType("text/html; charset=utf-8");
return viewResolver;
}
我的控制器是:
@RestController
public class HelloWorldController {
@GetMapping("/hello-world")
public String helloWorld(@ModelAttribute("model") ModelMap model) {
String message = "Hello World!";
model.addAttribute("message", message);
return "hello";
}
}
我正在使用 ftlh 文件扩展名作为模板,我的 hello.ftlh 文件如下所示:
[#import "_components.ftlh" as comp]
[@comp.page title="Hello"]
[@comp.hello]${message}[/@comp.hello]
[/@comp.page]
将 @RestController 替换为 @Controller。 @Controller 用于渲染视图并允许返回解析为模板的视图名称