Java Freemarker模板的内省或操作
我正在使用“动态”Freemarker模板,这意味着可以根据用户提交的输入进行更改的模板。我希望能够做两件事:Java Freemarker模板的内省或操作,java,freemarker,Java,Freemarker,我正在使用“动态”Freemarker模板,这意味着可以根据用户提交的输入进行更改的模板。我希望能够做两件事: 检查模板的已解析语法树以查看其包含的内容,尤其是标识符和${variables} 操作已解析的树,添加/删除元素 现在,我正在通过一些丑陋的正则表达式和字符串操作来实现这一点。它丑陋且容易出错,所以我想利用Freemarker在Java中的模板表示 根据JavaDoc,Template.getRootTreeNode似乎是我想要的东西的开始:我可以检索模板的类似DOM的解析树,Temp
FreeMarker目前没有发布用于检查模板的API,更不用说修改模板了。它会很有用,但它就是没有。所以,我想知道你能否从另一个角度来解决这个问题。您说您正在动态生成模板,除非模板本身是用户提交的,否则您可以存储用户提交的信息,根据这些信息生成模板,而不是模板本身。。。或者类似的东西。谢谢您的回复。不幸的是,模板本身是用户提交的。看起来Freemarker当前状态的解决方案是在Freemarker.core包中编写自己的类,以访问包本地类和字段,特别是TemplateElement的子类。您认为Freemarker维护者会接受使用公共getter为不可访问字段公开这些类的更改吗?我在哪里能进行这样的谈话?谢谢。我现在是FreeMarker的维护者。我同意这样一个API是有用的,但是。。。我有一个庞大的待办事项清单,时间非常有限。而且TODO列表中的某些内容会影响更多用户(例如,正确的地图处理)。为类似的东西添加公共API在将来很容易成为另一个向后兼容的障碍,如果做得不好。。。所以,这件事不可能很快发生。我能理解你需要优先考虑。如果我们能想出一个你能同意的方法,我很乐意做这项工作。我们应该在FreeMarker开发者邮件列表上讨论这个问题。