0
我们将从Thymeleaf 2.1升级到3.0.5。我们目前的设置(在升级之前)有许多thymeleaf模板定义并存储在数据库表中。
当我们尝试升级到3.x时,我们的2.1代码不再有效......没问题,但是我们无法找到任何有关如何使用Thymeleaf 3.0.5做基本相同事情的好例子。有没有人执行过这个?如何在Thymeleaf 3.0.5中从数据库读取Thymeleaf模板?
即使是一个体面的如何实现org.thymeleaf.templateresolver.StringTemplateResolver的例子也可能会把我们推向正确的方向......但是我们也找不到任何东西。
这就是我们在2.1中使用:
public class ThymeleafTemplateResolver extends TemplateResolver {
private final static String PREFIX = "";
public ThymeleafTemplateResolver() {
setResourceResolver(new DbResourceResolver());
setResolvablePatterns(Sets.newHashSet(PREFIX + "*"));
}
@Override
protected String computeResourceName(TemplateProcessingParameters params) {
String templateName = params.getTemplateName();
return templateName.substring(PREFIX.length());
}
private class DbResourceResolver implements IResourceResolver {
@Override
public InputStream getResourceAsStream(TemplateProcessingParameters params, String template) {
ThymeleafTemplateDao thymeleaftemplateDao = ApplicationContextProvider.getApplicationContext().getBean(ThymeleafTemplateDao.class);
ThymeleafTemplate thymeleafTemplate = thymeleaftemplateDao.findByTemplate(template);
if (thymeleafTemplate != null) {
return new ByteArrayInputStream(thymeleafTemplate.getContent().getBytes());
}
return null;
}
@Override
public String getName() {
return "dbResourceResolver";
}
}
}
任何帮助表示赞赏...
只是为了更好地理解你的问题,为什么你没有在你的web应用程序中的HTML thymeleaf文件作为一个普通的资源? – cralfaro
这是一个很长的故事。让我们发疯,并假设我们至少需要通过数据库提供一些模板。 – kasdega
你是否禁用Thymleafe缓存? –