الحصول على قالب النص من FreeMarker في الربيع التطبيق

StackOverflow https://stackoverflow.com/questions/230763

سؤال

في الربيع التطبيق ، أود أن استخدام FreeMarker توليد النص من رسائل البريد الإلكتروني التي سيتم إرسالها من خلال التطبيق الخاص بي.ولدت النص لن تعاد إلى عرض لذلك أنا لا تحتاج إلى تكوين FreeMarker عرض محلل.الوثائق تشير إلى أنه يجب أن تكوين FreeMarkerConfigurationFactoryBean مثل هذا

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

مرة واحدة لدي هذا الفول تكوين كيف كنت في الواقع الحصول على النص الذي تم إنشاؤه على نموذج معين ، مع خريطة معينة من المتغيرات.وبعبارة أخرى, ما رمز يأتي بعد:

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

الربيع وحدات يبدو أن توفير بديل التكامل بين الربيع و FreeMarker مما يجعل استرجاع قالب النص واضح جدا, لكن لا أفضل أن تضيف إضافية التبعية إلى التطبيق إلا إذا كان ذلك ضروريا.

أيضا, هل أنا بحاجة إلى إضافة المزيد من التكوين إلى FreeMarkerConfigurationFactoryBean لضمان القوالب المخزنة مؤقتا?

الهتافات ، لا

هل كانت مفيدة؟

المحلول

شيئا من هذا القبيل يجب أن تعمل

قبل الكود المقدمة ، تهيئة:

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

ثم بعد التعليمة البرمجية الخاصة بك ، إضافة:

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);

هنا هو بلدي 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="john.q.programmer@mail.com" />
    <property name="subject" value="Email Subject" />
</bean>

و التخزين المؤقت السؤال...

لقد رأيت الفول الملكية 'cache' في 'viewResolver' الفول الذي قلت أنك لن تستخدم.

انظر أيضا: الفصل 14.دمج عرض التقنيات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top