使用 USCavalry 转换器将 Velocity 模板转换为 FreeMarker

Posted

技术标签:

【中文标题】使用 USCavalry 转换器将 Velocity 模板转换为 FreeMarker【英文标题】:Converting Velocity template into FreeMarker using USCavalry converter 【发布时间】:2017-09-29 23:53:58 【问题描述】:

我有大量的 Velocity 模板想要转换为 FreeMarker。

我发现了一个名为 USCavalry 的转换器工具,声称可以完成这项工作。

我在 IntelliJ 中将其设置为 Maven 项目,并将 Velocity 和 Freemarker 依赖项添加到我的 pom.xml。

该工具运行良好,但我对得到的输出不满意。它似乎是 AST 的标记化输出。正确的 FreeMarker 符号不会被替换。

还有其他人遇到过这个问题吗?为了获得有意义的 FreeMarker 模板作为输出,您做了哪些更改?

我将尝试修改源以输出 Velocity RuntimeServices.parse() 以外的其他内容,但我认为如果其他人已经解决了这个问题可能会有所帮助。

【问题讨论】:

【参考方案1】:

USCavarlry 是一个非常简单的工具,而且也非常过时(链接的网页是一个 10 年前的快照,也许那时它已经过时了)。对于非常基本的事情,它似乎可以工作(至少对我来说,#if($x == 1)$y#end 被翻译成<#if x == 1>$y</#if>)。即使在理论上也不可能进行正确的自动翻译,而且即使做到一半体面也将非常棘手(就像您必须考虑语义差异,例如在 if 条件中被视为逻辑正确的内容,必须识别广泛使用的调用Velocity 工具并将它们翻译成?xxx 表达式等)。据我所知,不存在这样的工具。因此,这主要是一项手动任务,需要手工制作正则表达式替换等等……或者您必须修改 USCavalry 源代码,以较快者为准。

【讨论】:

不,它甚至没有为我做那些基本的事情。但我很欣赏你的回答。知道这是一个手动过程是值得的。我已经开始手动操作了,但我认为可以使用工具来简化操作。感谢您的宝贵时间!

以上是关于使用 USCavalry 转换器将 Velocity 模板转换为 FreeMarker的主要内容,如果未能解决你的问题,请参考以下文章

thymeleaf模板的使用(转)

velocity教程

volicity语法学习和总结

Java:为啥我不能在 main 之外调用这个方法? [关闭]

JOOQ 使用转换器将字符串转换为枚举

我使用 JSON 转换器将 JSON 转换为 c# 时遇到问题