I'm facing a scenario where I need to process an HTML template (index.html) which is unzipped from a ZIP file (via ZipInputStream) via the Thymeleaf TemplateEngine with my Data POJO. So what I have right now is the InputStream of the unzipped template file. I believe TemplateResolver will help me to solve this case.
TemplateResolver is a generic implementation, allowing you to specify your own IResourceResolver implementation that obtains input streams in whichever way you need. You can create your own resource resolver (implementing IResourceResolver) and set it to a TemplateResolver instance.
How to accomplish this task? Any insights ?
// index.html is the byte[] here, 'resourceData'
InputStream fileinputStream = new ByteArrayInputStream(resourceData);
FileResourceResolver fileResourceResolver = new FileResourceResolver();
TemplateResolver resolver = new TemplateResolver();
resolver.setTemplateMode("XHTML");
resolver.setSuffix(".html");
resolver.setResourceResolver(fileResourceResolver);
TemplateEngine engine = new TemplateEngine();
engine.setTemplateResolver(resolver);
Context context = new Context(Locale.US);
context.setVariable("data", myDataPojo);
return engine.process("index", context);