2011-04-03 15 views
5

मेरे पास एक स्प्रिंग/जेएसएफ वेब एप्लिकेशन है जिसमें मॉड्यूल की निर्भरता फ्रीमार्कर टेम्पलेट्स का उपयोग करती है। यहाँ मैं एकीकरण के लिए क्या किया है:स्प्रिंग फ्रीमार्कर कॉन्फ़िगरेशन, टेम्पलेट नहीं मिला

मैं applicationContext.xml को applicationContext-freemarker-module.xml आयातित मैं नीचे की तरह applicationContext-freemarker-module.xml के विन्यास सेम गयी।

<bean id="freemarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean"> 
    <property name="templateLoaderPath" value="classpath*:/"/> 
</bean> 

मैंने अपने टेम्पलेट्स को फ्रीमार्कर मॉड्यूल के स्रोत/मुख्य/संसाधन निर्देशिका में डाल दिया। मैं नीचे की तरह टेम्पलेट्स पढ़ रहा हूँ:

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-freemarker-module.xml"); 

Configuration templateConfig = (Configuration) context.getBean("freemarkerConfiguration"); 

Template template = templateConfig.getTemplate("template.ftl"); 

अब मैं templateLoaderPath संपत्ति के लिए इतने सारे मूल्यों की कोशिश की लेकिन मैं हमेशा मिल गया "खाका नहीं मिला।" अपवाद।

Freemarker मॉड्यूल के जार की तरह है

template.ftl 
applicationContext-freemarker-module.xml 
com/.../ (classes) 
META-INF 

मैं कहाँ टेम्पलेट फ़ाइलों रखना चाहिए और क्या मैं templateLoaderPath मूल्य के लिए स्थापित करना चाहिए नीचे? मुझे समझ में नहीं आया कि क्यों "template.ftl" नहीं मिला। मैं कई घंटों के लिए सही मूल्य निर्धारित करने की कोशिश कर रहा हूं। मैंने सफलता के बिना विभिन्न पथ विन्यास की कोशिश की। "गलत"

धन्यवाद आपकी मदद के लिए एक बहुत,

+0

क्या आपने '' कोशिश की है? यदि .ftl फ़ाइल जार की जड़ में है तो यह काम करना चाहिए ... – javanna

+0

हाँ मैंने कोशिश की है और अभी भी .ftl फ़ाइल नहीं मिल सकती है। उत्तर के लिए बहुत बहुत धन्यवाद। – jiraiya

उत्तर

11

सुनिश्चित करें कि आप निम्नलिखित है

  1. अपने * कार्रवाई के सर्वलेट एक्सएमएल FreeMarkerConfigurationFactoryBean विन्यास में "preferFileSystemAccess" संपत्ति की स्थापना की है

  2. <property name="templateLoaderPath" value="classpath*:/"/> should be <property name="templateLoaderPath" value="classpath:/"/>

    freemarker में टेम्पलेट लोडर एक strin मिलान करने के लिए कोशिश करता है जी "क्लासपाथ:", "क्लासपाथ * नहीं:"

  3. आपके पास वेब-आईएनएफ/lib फ़ोल्डर के तहत जेएआर फ़ाइल है।

  4. अंत में, आपकी टेम्पलेट फ़ाइल जार फ़ाइल की जड़ के नीचे है।

    <bean 
        class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean"> 
        <property name="templateLoaderPath" value="classpath:META-INF/freemarker/" /> 
        <property name="preferFileSystemAccess" value="false" /> 
    </bean> 
    

    आशा इस मदद आप:

+2

+1 के लिए +1FileSystemAccess = false –

+0

हाँ! यह पूरी तरह से सही जवाब था ;-) –

+0

मेरे लिए थोड़ा अलग मामला: मेरे पास "क्लासपाथ: टेम्पलेट्स" था और यह जेट्टी पर काम नहीं कर रहा था, इसे "क्लासपाथ: टेम्पलेट्स" में बदल रहा था और यह ठीक काम करता है! – dannrob

3

इस तरह की कुछ सेम का प्रयोग करें।

संबंधित मुद्दे