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

标签 java converters freemarker velocity

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

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

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

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

有没有其他人遇到过这个问题?您更改了什么以获得有意义的 FreeMarker 模板作为输出?

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

最佳答案

USCavarlry 是一个非常简单的工具,也非常过时(链接的网页是 10 年前的快照,也许它在那时就已经过时了)。对于非常基本的事情,它似乎有效(比如 #if($x == 1)$y#end 被翻译成 <#if x == 1>${y}</#if> ,至少对我而言)。正确的自动翻译即使在理论上也是不可能的,即使做得一半体面也会非常棘手(就像你必须考虑语义差异,比如在 if 条件下什么才算是逻辑真,必须认识到广泛使用的调用速度工具并将它们转换为 ?xxx 表达式等)。据我所知,不存在这样的工具。因此,这主要是一项手动任务,使用手工制作的正则表达式替换和所有...或者您必须修改 USCavalry 源代码,以速度更快者为准。

关于java - 使用 USCavalry 转换器将 Velocity 模板转换为 FreeMarker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43738202/

相关文章:

Java Swing : How to make JLists resize properly when GridBagLayout column is set to grow, 忽略了 JList 的项目宽度?

java - 如何让 Spring Converter 抛出自定义异常而不是 ConversionFailedException?

c# - 在 C# 中将总时间转换为分钟

java - Freemarker - 模板预处理

java - 在Android应用程序中动态添加Button到ArrayList

java - 将数组中的 2 个 double 元素相除会导致无意的舍入

java - Java 套接字编程中使用的观察者模式不起作用

java - 如何从十六进制转换为十进制以及从十进制转换为二进制

java - 速度与 FreeMarker

freemarker - 从类路径设置 freemarker 模板