 <p>I believe the problem is that with a key of <code>lang.mail.layout.greeting</code>, Freemarker treats each part between the <code>.</code>s as a <a href="http://freemarker.sourceforge.net/docs/dgui_quickstart_datamodel.html" rel="nofollow">hash</a> i.e. a container variable that can have <em>subvariables</em>. So it attempts to get the object referenced by <code>lang</code> from the data-model and then attempts to get the variable referenced by <code>mail</code> from <code>lang</code>. In your case, however, there is no such object, hence the error.</p> <p><a href="http://freemarker.sourceforge.net/docs/dgui_template_exp.html" rel="nofollow">The documentation has this to say about variable names</a>:</p> <blockquote> <p>In this expression the variable name can contain only letters (including non-Latin letters), digits (including non-Latin digits), underline (_), dollar ($), at sign (@) and hash (#). Furthermore, the name must not start with digit.</p> </blockquote> <p>You might make use of the <a href="http://freemarker.sourceforge.net/docs/dgui_template_exp.html#dgui_template_exp_var_hash" rel="nofollow">alternative syntax to get data from a hash</a> (as long as the expression evaluates to a string)</p> <pre><code>&lt;p&gt;${lang["mail.layout.greeting"]} ${user.firstname},&lt;/p&gt; </code></pre>