我是一个非常基础的 StringTemplate 新手。我正在尝试利用它来发送自动电子邮件。我已经尽可能多地阅读以消化那里的内容。我从一个简单的测试用例开始,在获取要渲染的对象的属性时遇到了麻烦。作为测试用例,我的模板文件 email.stg 中有以下内容。
delimiters "$", "$"
activate(person) ::= <<$person.personFirstName$>>
我正在尝试传递我的 Person 对象并让模板呈现 personFirstName 属性。这将调用一个公开的 getter Person.personFirstName()。
我的 Java 代码如下所示:
Person _thePerson = //fetched from database
STGroup group = new STGroupFile(/tmp/email.stg);
ST st = group.getInstanceOf("activate");
st.add("person", _thePerson);
System.out.println("the person first name is: " + _thePerson.personFirstName());
System.out.println(st.render());
我的输出反映了 personFirstName 属性可通过 java 使用,但我的模板没有呈现它。
the person first name is: Ivan
<nothing is returned here>
如果我将激活模板限制为:
activate(person) ::= <<$person$>>
我得到以下结果,其中人员对象呈现为 _thePerson.toString()。
the person first name is: Ivan
999999999 - Johnson, Ivan G
任何帮助将不胜感激,因此我可以继续使用我正在尝试使用的更复杂的模板。