starter español java spring templates freemarker

java - español - Obteniendo texto de plantilla de FreeMarker en la aplicación Spring



spring 5 freemarker (1)

Algo como esto debería funcionar

Antes del código que proporcionó, inicialice:

MailSender mailSender = new JavaMailSenderImpl(); SimpleMailMessage message = new SimpleMailMessage();

Luego, después de tu código, agrega:

StringBuffer content = new StringBuffer(); try { content.append(FreeMarkerTemplateUtils.processTemplateIntoString( configuration.getTemplate(templateName), templateVars)); } catch (IOException e) { // handle } catch (TemplateException e) { // handle } message.setFrom(getMailFromName() + " <" + getMailFromAddr() + ">"); message.setTo(getMailTo()); if (getCcTo() != null) message.setCc(getCcTo()); message.setSubject(getSubject()); message.setText(content.toString()); mailSender.send(message);

Aquí está mi applicationContext.xml:

<bean id="freemarkerMailConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean"> <property name="templateLoaderPath" value="/WEB-INF" /> </bean> <bean id="yourEmailServiceClass" class="YourEmailServiceClass"> <property name="mailSender" ref="mailSender" /> <property name="freemarkerMailConfiguration" ref="freemarkerMailConfiguration" /> <property name="freemarkerTemplate" value="email.ftl" /> <property name="mailFromName" value="John Q. Programmer" /> <property name="mailFromAddr" value="[email protected]" /> <property name="subject" value="Email Subject" /> </bean>

Y tu pregunta de almacenamiento en caché ...

Solo he visto una ''memoria caché'' de propiedades de beans en un bean ''viewResolver'', que dijiste que no usarías.

Consulte también: Capítulo 14. Integración de tecnologías de visualización

En mi aplicación Spring, me gustaría usar FreeMarker para generar el texto de los correos electrónicos que mi aplicación enviará. El texto generado nunca volverá a la vista, por lo que no es necesario configurar un verificador de vistas de FreeMarker. La documentación parece indicar que debo configurar un FreeMarkerConfigurationFactoryBean como este

<bean id="freemarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean"> <property name="templateLoaderPath" value="/WEB-INF/freemarker/"/> </bean>

Una vez que tengo configurado este bean, ¿cómo obtengo el texto que se genera para una plantilla en particular, con un Mapa de variables en particular? En otras palabras, qué código viene después:

String templateName = "email" Map templateVars = new HashMap(); templateVars.put("firstName", "john"); templateVars.put("surname", "doe"); // Now how do I get the template text?

Los módulos Spring parecen proporcionar una integración alternativa entre Spring y FreeMarker, lo que hace que la recuperación del texto de la plantilla sea muy obvia, pero preferiría no agregar una dependencia adicional a mi aplicación a menos que sea absolutamente necesario.

Además, ¿necesito agregar alguna configuración adicional a FreeMarkerConfigurationFactoryBean para garantizar que las plantillas estén en caché?

Saludos, Don