문제

스프링 앱에서는 프리 마커를 사용하여 응용 프로그램에서 전송 될 이메일 텍스트를 생성하고 싶습니다. 생성 된 텍스트는 뷰로 반환되지 않으므로 프리 마커보기 레졸버를 구성 할 필요가 없습니다. 문서는 이와 같이 FreemarkErconFigurationFactoryBean을 구성해야한다는 것을 나타냅니다.

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

이 Bean이 구성되면 특정 변수 맵을 사용하여 특정 템플릿에 대해 생성 된 텍스트를 실제로 어떻게 얻습니까? 다시 말해, 어떤 코드가 다음에 나오는지 :

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

스프링 모듈 스프링과 프리 마커 사이의 대체 통합을 제공하는 것 같습니다. 템플릿 텍스트를 검색하는 것은 매우 명백하지만, 절대적으로 필요하지 않은 한 내 앱에 추가 종속성을 추가하지 않기를 원합니다.

또한 템플릿이 캐시되어 있는지 확인하기 위해 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>

그리고 당신의 캐싱 질문 ...

나는 '뷰 레졸버'콩에서 Bean Property '캐시'만 보았습니다.

또한보십시오: 14 장. 뷰 기술 통합

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top