2011-05-16 15 views
6

HI,फ्रीमार्कर

में जावा गुणों का उपयोग करें मेरे पास मेरे आवेदन में एक विशिष्ट messages.properties फ़ाइल है। मैं Freemarker का उपयोग कर एक ईमेल उत्पन्न करने की कोशिश कर रहा हूँ।

फ्रीमार्कर टेम्पलेट String पर उत्पन्न होना चाहिए, जिसके बाद मैं उपयोगकर्ता को ईमेल के माध्यम से String भेजूंगा। हालांकि, हमें इसे बहुभाषी की आवश्यकता है। तो Properties दिमाग में आया।

मेरे गुण फ़ाइल इस तरह दिखता है:

mail.layout.contactus=Contacteer ons 
mail.layout.greeting=Hoi 

जावा में, मैं Properties फ़ाइल मेरी HashMap में इस तरह दर्ज करें:

rootMap.put("lang", (mail.getLanguage().equals(Language.FRENCH) ? langFR : langNL)); 

और इस तरह FreeMarker में इसे पढ़ने के लिए प्रयास करें:

<p>${lang.mail.layout.greeting} ${user.firstname},</p> 

लेकिन निम्नलिखित अपवाद प्राप्त करें:

freemarker.core.InvalidReferenceException: Expression lang.mail is undefined on line 10, column 116 in layout/email.ftl. 

अजीब है, यह केवल lang.mail का कहना है के रूप में करने का विरोध किया lang.mail.layout.greeting

संपादित करें: मैं इस तरह मेरी कुंजी को परिभाषित करने की कोशिश की:

mail_layout_contactus=Contacteer ons 
mail_layout_greeting=Hoi 

जो काम करता है

उत्तर

4

मेरा मानना ​​है कि समस्या यह है कि lang.mail.layout.greeting की कुंजी के साथ, फ्रीमार्कर ट्रे . के बीच hash के बीच प्रत्येक भाग टीएस एक कंटेनर वैरिएबल है जिसमें सबवारीबल्स हो सकता है। इसलिए यह डेटा-मॉडल से lang द्वारा ऑब्जेक्ट को संदर्भित करने का प्रयास करता है और फिर lang से mail द्वारा संदर्भित चर प्राप्त करने का प्रयास करता है। हालांकि, आपके मामले में, ऐसी कोई वस्तु नहीं है, इसलिए त्रुटि।

The documentation has this to say about variable names:

इस एक्सप्रेशन में चर नाम (गैर लैटिन अक्षर सहित) केवल अक्षर शामिल कर सकते हैं, अंक (गैर-लैटिन अंक सहित), डॉलर ($) ड्रॉइंग (_),, पर साइन (@) और हैश (#)। इसके अलावा, नाम अंकों के साथ शुरू नहीं होना चाहिए।

आप alternative syntax to get data from a hash का इस्तेमाल करते हैं हो सकता है (जब तक कि अभिव्यक्ति एक स्ट्रिंग का मूल्यांकन)

<p>${lang["mail.layout.greeting"]} ${user.firstname},</p> 
+0

बढ़िया है, कि काम करता है! धन्यवाद –

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