springboot 获取freemarker 内容
时间: 2023-10-19 14:20:09 浏览: 268
在 Spring Boot 中获取 Freemarker 模板内容可以使用 `FreeMarkerConfigurer` 类和 `Template` 类的组合。
1. 首先,需要在 `application.properties` 文件中配置 Freemarker 相关的属性:
```
spring.freemarker.template-loader-path=classpath:/templates/
spring.freemarker.suffix=.ftl
```
2. 接着,在 Spring Boot 的配置类中创建 `FreeMarkerConfigurer` 类的实例,并设置模板文件的位置和编码方式:
```java
@Configuration
public class FreemarkerConfig {
@Autowired
private ApplicationContext applicationContext;
@Bean
public FreeMarkerConfigurer freeMarkerConfigurer() throws IOException {
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
configurer.setTemplateLoaderPath("classpath:/templates/");
configurer.setDefaultEncoding("UTF-8");
configurer.setApplicationContext(applicationContext);
return configurer;
}
}
```
3. 最后,在控制器中获取模板内容并返回给前端:
```java
@Controller
public class HomeController {
@Autowired
private FreeMarkerConfigurer freeMarkerConfigurer;
@GetMapping("/home")
public String home(Model model) throws IOException, TemplateException {
Template template = freeMarkerConfigurer.getConfiguration().getTemplate("home.ftl");
StringWriter writer = new StringWriter();
template.process(model.asMap(), writer);
String content = writer.toString();
model.addAttribute("content", content);
return "home";
}
}
```
在上面的代码中,使用 `FreeMarkerConfigurer` 实例的 `getConfiguration()` 方法获取 `Configuration` 类的实例,然后通过 `getTemplate()` 方法获取指定名称的模板文件。接着使用 `StringWriter` 类的实例将模板内容写入到一个字符串中,并将字符串添加到 `Model` 类的实例中返回给前端。
阅读全文