我们在 java 中使用字符串模板已经有一段时间了,刚刚升级到字符串模板 4.0.7。
在字符串模板 3.2(我们之前使用的版本)中,我有一个名为stringtemplate.st
in的字符串模板文件src/main/resources
,我们只是有一个名为任何我们喜欢的东西的组,因为它似乎没有什么区别,并像这样加载模板:
final StringTemplateGroup group = new StringTemplateGroup("groupName");
final StringTemplate xmlMessage = group.getInstanceOf("stringtemplate");
更新到 4.0.7 后,如果您希望加载单个文件,我的理解是您需要有一个STGroupDir
对象,其名称为模板所在的文件夹。因此,我将 stringtemplate 文件移动到src/main/resources/templates
并将上面的代码更改为:
final URL url = Thread.currentThread().getContextClassLoader().getResource("templates");
final STGroup group = new STGroupDir(url.getPath(), '$', '$');
final ST xmlMessage = group.getInstanceOf("stringtemplate");
然后当我尝试填充字符串模板时,这会导致抛出一个空指针,并且似乎没有找到任何模板。
我的理解是传递给 STGroupDir 构造函数的 String 应该是模板文件所在的目录,如果在那里找不到模板文件,无论如何都会搜索类路径。我从根本上误解了什么吗?关于我做错了什么的任何建议?