template mkyong example spring maven spring-boot freemarker

spring - mkyong - ¿Cómo leer los archivos de plantillas de Freemarker desde la carpeta src/main/resources?



spring 5 freemarker (2)

¿Cómo acceder a los archivos de mi plantilla de freemarker (* .ftl) almacenados en mi carpeta src / main / resources desde mi código (aplicación Spring Boot)?

Probé lo siguiente

freemarker.template.Configuration config = new Configuration(); configuration.setClassForTemplateLoading(this.getClass(), "/resources/templates/");

y obteniendo la siguiente excepción

freemarker.template.TemplateNotFoundException: Template not found for name "my-template.ftl".


La raíz de la ruta de clase es src/main/resources , cambie la ruta a

configuration.setClassForTemplateLoading(this.getClass(), "/templates/");


Me enfrentaba al problema "freemarker.template.TemplateNotFoundException: no se encontró la plantilla para el nombre ...". Mi código era correcto, pero olvidé incluir el directorio / templates / en pom.xml. Así que debajo del código solucioné el problema para mí. Espero que esto ayude.

AppConfig.java : @Bean(name="freemarkerConfiguration") public freemarker.template.Configuration getFreeMarkerConfiguration() { freemarker.template.Configuration config = new freemarker.template.Configuration(freemarker.template.Configuration.getVersion()); config.setClassForTemplateLoading(this.getClass(), "/templates/"); return config; } EmailSenderServiceImpl.java: @Service("emailService") public class EmailSenderServiceImpl implements EmailSenderService { @Autowired private Configuration freemarkerConfiguration; public String geFreeMarkerTemplateContent(Map<String, Object> dataModel, String templateName) { StringBuffer content = new StringBuffer(); try { content.append(FreeMarkerTemplateUtils.processTemplateIntoString(freemarkerConfiguration.getTemplate(templateName), dataModel)); return content.toString(); } catch(Exception exception) { logger.error("Exception occured while processing freeMarker template: {} ", exception.getMessage(), exception); } return ""; } } pom.xml : <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <scope>compile</scope> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/resources/</directory> <includes> <include>templates/*.ftl</include> </includes> </resource> <resource> <directory>src/main/</directory> <includes> <include>templates/*.ftl</include> </includes> </resource> </resources> </build>