springboot 从数据库加载freemark模板文件
时间: 2024-11-23 22:30:54 浏览: 12
在Spring Boot应用中,如果你想要从数据库动态加载Freemarker模板文件,首先你需要在数据库存储模板内容,通常是作为一个字符串字段存在。然后可以创建一个Service或者Repository去读取并获取这个模板内容。
下面是一个简单的示例,假设你有一个名为`Template`的表,其中有一个`content`字段存放模板内容:
```java
@Service
public class TemplateService {
@Autowired
private JdbcTemplate jdbcTemplate;
public String getTemplate(String templateId) {
return jdbcTemplate.queryForObject(
"SELECT content FROM template WHERE id = ?",
new Object[] {templateId},
String.class);
}
}
```
在Controller中,你可以这样调用服务并把结果传递给Freemarker:
```java
@GetMapping("/render-template")
public String renderFromDatabase(@PathVariable Long templateId) {
TemplateService service = new TemplateService();
String templateContent = service.getTemplate(templateId);
Map<String, Object> model = new HashMap<>();
// ...添加其他数据到模型...
ModelMap modelAndView = new ModelMap();
modelAndView.addAttribute("templateContent", templateContent);
modelAndView.addAllAttributes(model);
FreeMarkerView freeMarkerView = new FreeMarkerView();
freeMarkerView.setTemplateName("dynamic_template"); // 模板名称
freeMarkerView.setVariables(modelAndView);
return freeMarkerView;
}
```
然后在`templates`目录下的`dynamic_template.ftl`模板文件中,你可以像之前那样引用数据:
```html
<p>${templateContent}</p>
```
阅读全文