[英]Use Java Properties in Freemarker
HI,
我的應用程序中有一個典型的messages.properties
文件。 我正在嘗試使用Freemarker生成電子郵件。
Freemarker模板應該生成一個String
,然后我將通過電子郵件將String
發送給用戶。 但是,我們需要多語言。 所以我想到了Properties
。
我的屬性文件如下所示:
mail.layout.contactus=Contacteer ons
mail.layout.greeting=Hoi
在Java中,我在HashMap
輸入Properties
文件,如下所示:
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
哪個確實有效
我相信問題在於,使用lang.mail.layout.greeting
的密鑰,Freemarker會處理它之間的每個部分.
s作為哈希,即可以具有子變量的容器變量 。 因此,它嘗試從數據模型中獲取lang
引用的對象,然后嘗試從lang
獲取mail
引用的變量。 但是,在您的情況下,沒有這樣的對象,因此錯誤。
在此表達式中,變量名稱只能包含字母(包括非拉丁字母),數字(包括非拉丁字母),下划線(_),美元($),符號(@)和哈希(#)。 此外,名稱不得以數字開頭。
您可以使用替代語法從哈希中獲取數據 (只要表達式求值為字符串)
<p>${lang["mail.layout.greeting"]} ${user.firstname},</p>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.