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緩存? –