काम नहीं करता है। मेरे पास स्प्रिंग बूट (नवीनतम 1.1.5.RELEASE) और थाइमेलीफ पर आधारित वेब ऐप काम कर रहा है।
अब मैं ईमेल भेजने और थिमलाफ को टेम्पलेटिंग इंजन के रूप में उपयोग करने के लिए कार्यक्षमता जोड़ना चाहता हूं।
pom.xml में मैं जोड़ें:
स्प्रिंग बूट टेम्पलेट के रूप में थाइमेलीफ का उपयोग करके ईमेल भेज रहा है - कॉन्फ़िगरेशन
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mail</artifactId>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
इस ट्यूटोरियल के बाद:
@Configuration
public ThymeleafReplaceConfigurator {
@Bean
public JavaMailSender getJavaMailSenderImpl(){
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
Properties props = new Properties();
/* some properties here */
javaMailSender.setJavaMailProperties(props);
return javaMailSender;
}
@Bean
public ClassLoaderTemplateResolver emailTemplateResolver(){
ClassLoaderTemplateResolver emailTemplateResolver = new ClassLoaderTemplateResolver();
emailTemplateResolver.setPrefix("/mails/");
emailTemplateResolver.setSuffix(".html");
emailTemplateResolver.setTemplateMode("HTML5");
emailTemplateResolver.setCharacterEncoding("UTF-8");
emailTemplateResolver.setOrder(1);
return emailTemplateResolver;
}
@Bean
public ServletContextTemplateResolver defaultWebTemplateResolver(){
ServletContextTemplateResolver webTemplateResolver = new ServletContextTemplateResolver();
webTemplateResolver.setPrefix("/templates/");
webTemplateResolver.setSuffix(".html");
webTemplateResolver.setTemplateMode("HTML5");
webTemplateResolver.setCharacterEncoding("UTF-8");
webTemplateResolver.setOrder(2);
return webTemplateResolver;
}
@Bean
public SpringTemplateEngine templateEngine(){
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(emailTemplateResolver());
templateEngine.setTemplateResolver(defaultWebTemplateResolver());
return templateEngine;
}
@Bean
public ThymeleafViewResolver thymeleafViewResolver() {
ThymeleafViewResolver thymeleafViewResolver = new ThymeleafViewResolver();
thymeleafViewResolver.setTemplateEngine(templateEngine());
thymeleafViewResolver.setCharacterEncoding("UTF-8");
return thymeleafViewResolver;
}
}
फ़ोल्डर और फ़ाइलों का पेड़ है: http://www.thymeleaf.org/doc/articles/springmail.html
पूरा (कोई एक्सएमएल) इस तरह जावा विन्यास मिला जैसे:
src
main
resources
templates
login.html
error.html
mails
exampleMail.html
लेकिन यह काम नहीं करता है। एप्लिकेशन सही ढंग से शुरू होता है लेकिन पृष्ठों तक पहुंच (जो इस कॉन्फ़िगरेशन के बिना काम करता है) अपवाद का कारण बनता है:
अनुरोध प्रसंस्करण विफल रही; नेस्टेड अपवाद है org.thymeleaf.exceptions.TemplateInputException: टेम्पलेट "लॉगिन" को हल करने में त्रुटि, टेम्पलेट मौजूद नहीं हो सकता है या किसी भी कॉन्फ़िगर किए गए टेम्पलेट रिजॉलर्स
द्वारा एक्सेस नहीं किया जा सकता है। मैंने विभिन्न उपसर्गों को webTemplateResolver.setPrefix में रखने की कोशिश की लेकिन सफलता के बिना ।
इसके अलावा मैंने थाइमेलीफ के पुराने संस्करण में बग की सूचना दी है, लेकिन ऐसा लगता है कि यह तय किया गया था और मेरे पास नया संस्करण है।
क्या कोई इस कॉन्फ़िगरेशन में गलत पहचान को देखता है?
समस्या यह है कि आप बहुत अधिक कॉन्फ़िगर कर रहे हैं। स्प्रिंग बूट पहले से ही टेम्पलेट इंजन के साथ-साथ आपके लिए दृश्य रिज़ॉल्यूशन को कॉन्फ़िगर करता है। अलग-अलग रिज़ॉलर्स के साथ दो बार 'सेट टेम्पलेट रीसोलवर' को भी कॉल करना ज्यादा नहीं होगा लेकिन पिछले एक को ओवरराइड करेगा। मैं सबकुछ हटाने का सुझाव देता हूं लेकिन ईमेल कॉन्फ़िगरेशन और 'ईमेल टेम्पलेट रीसोलवर' सब कुछ स्प्रिंग बूट द्वारा संभाला जाएगा। –
बहुत धन्यवाद एम। डीनियम, अब यह काम करता है जैसे यह करना चाहिए। असल में मुझे नहीं पता था कि स्वत: कॉन्फ़िगर किया गया स्प्रिंग बूट बॉक्स के बाहर मेरा अतिरिक्त टेम्पलेट रिज़ॉल्वर देखेगा :) –
जब तक मैंने ऑटो कॉन्फ़िगरेशन के स्रोत को नहीं देखा तब तक मैंने तब तक नहीं किया। –