Bar*_*den 7 java multilingual freemarker
HI,
messages.properties我的应用程序中有一个典型的文件.我正在尝试使用Freemarker生成电子邮件.
Freemarker模板应生成a String,之后我将String通过电子邮件发送给用户.但是,我们需要多语言.所以Properties想到了.
我的属性文件如下所示:
mail.layout.contactus=Contacteer ons
mail.layout.greeting=Hoi
在Java中,我输入我的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
哪个确实有效
我认为问题在于,使用 的键,Freemarker 将slang.mail.layout.greeting之间的每个部分视为散列,即可以具有子变量的容器变量。因此它尝试从数据模型中获取引用的对象,然后尝试获取from引用的变量。然而,在您的情况下,不存在这样的对象,因此会出现错误。.langmaillang
在此表达式中,变量名称只能包含字母(包括非拉丁字母)、数字(包括非拉丁数字)、下划线 (_)、美元 ($)、at 符号 (@) 和井号 (#)。此外,名称不能以数字开头。
您可以使用替代语法从哈希中获取数据(只要表达式计算结果为字符串)
<p>${lang["mail.layout.greeting"]} ${user.firstname},</p>
| 归档时间: | 
 | 
| 查看次数: | 5596 次 | 
| 最近记录: |