Trotz es gibt eine Menge Diskussion um Freemarker + Frühling daher ist es schwierig zu finden ordentlich funktionierendes Beispiel zu kopieren und zu laufen.
Könnten Sie bitte die einfachste funktionierende Konfiguration von Freemarker im Frühjahr xml context und java code snippet bereitstellen, um die Vorlage aus der Ressourcendatei zu laden und zu verarbeiten.Freimarker + Feder Konfiguration und einfachste Beispiel
Antwort
pom.xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
applicationContext.xml
<bean id="freeMarkerConfigurationFactory" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
<property name="templateLoaderPath" value="classpath:/META-INF/freemarker"/>
<property name="preferFileSystemAccess" value="false"/>
</bean>
AlertMailComposer.java
import static org.springframework.ui.freemarker.FreeMarkerTemplateUtils.processTemplateIntoString;
@Component
public class AlertMailComposer implements Processor {
public static final String TEMPLATE = "AlertMail.ftl";
@Autowired
private Configuration freemarkerConfiguration;
protected String composeHtml(Alert alert) throws IOException, TemplateException {
return processTemplateIntoString(freemarkerConfiguration.getTemplate(TEMPLATE), ImmutableMap.of(
"alertType", alert.getAlertType(),
"message", alert.getMessage(),
"nodeName", alert.getEvent().getNodeName(),
"event", toJson(alert.getEvent(), true)
));
}
...
AlertMail.ftl
<html>
<body style="font-family:verdana;font-size:10">
<b>${alertType}: </b>${message}<br>
<b>on: </b>${nodeName}<br>
<p/>
<pre style="font-family:verdana;font-size:10;color:grey">
${event}
</pre>
</body>
</html>
Bestes Arbeitsbeispiel. Sie können den Quellcode here herunterladen.
Danke für Ihre Antwort, ich habe bereits durch diesen Blog gearbeitet und es ist gut. Aber es ist eng an das Webprojekt-Layout gebunden. Was ich suche, ist 'Vorlage von Ressource laden und Platzhalter ersetzen' so einfach wie möglich. –
Im Frühjahr Kontext xml, FreemarkerConfigurationFactoryBean
erklärt genügt, das heißt
<bean id="freemarkerConfigFactory" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
<property name="templateLoaderPath" value="classpath:templates/"/>
</bean>
Keine Notwendigkeit, weitere freemarker.template.Configuration
Bean in der XML-Datei angeben, wenn Sie @Autowired
Anmerkung verwenden. Es wird von der Fabrik erstellt und von Spring injiziert.
Anders als Maven Abhängigkeit in pom.xml im Frühjahr mit Java-Konfiguration zu verwenden, die Sie tun können -
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { MyRootContextConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { MyServletContextConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/test/*" };
}
}
und dann kann MyRootContextConfig
haben
@Bean(name = "myFreeMarkerConfigruation")
public FreeMarkerConfigurationFactoryBean getFreeMarkerConfiguration() {
FreeMarkerConfigurationFactoryBean bean = new FreeMarkerConfigurationFactoryBean();
bean.setTemplateLoaderPath("classpath:/templates/");
return bean;
}
Dieses Beispiel ist mit Java-basierten Konfigurations und verwendet immer noch ein Web-Projekt, aber das ist, was ich referenziere: https://github.com/edendramis/freemarker-example – ratherblue