java - 带有 Freemarker 的 Netbeans 模板 : built-in with argument fails

标签 java templates netbeans freemarker

我正在设置一些自定义 Netbeans Java 模板。当我使用不带参数的内置函数时,例如 ${name?lower_case} ,我的模板工作正常。但是,当我使用带参数的函数时,最终出现错误(生成的文件为空)。

所谓的函数是 removing_ending 。我有一个 Test.java,我想生成一个依赖于 Test.java 的 TestView.java:

<#assign type = ${name?remove_ending("View")}>

<#if package?? && package != "">
package ${package};
</#if>

import com.company.project.AbstractClass;

public class ${name} extends AbstractClass<${type}>{

}
<小时/>

我想知道我是否错过了一些导入,但据说该功能是内置的,所以我认为它是可用的。

  • 我尝试添加 <#ftl>在模板顶部但没有成功
  • type = "${name?remove_ending("View")}" (双引号)或在 View 周围转义引号言语也没有帮助
<小时/>

编辑和解决方案

  • 在 Windows 上,Netbeans 日志位于 %USER_HOME%/AppData/Roaming/NetBeans/{netbeans version}/var/log/messages.log
  • 我没有查找正在使用哪个版本的 FreeMarker Netbeans 8.2,而是查找命令 remove_ending根本不可用。我用了name?substring(0, name?length - 4)
  • 模板文件位于 %USER_HOME%\AppData\Roaming\NetBeans{netbeans 版本}\config\Templates 中

最佳答案

正确的语法是<#assign type = name?remove_ending("View")> 。否${}那里需要。

此外,我不了解 NetBeans,但至少在某处一定有一些日志可以告诉您错误是什么。 (它默默地为您提供空输出,没有任何错误弹出窗口,至少可以说这对用户不太友好。可能值得在 NetBeans 上填写错误报告。)如果没有,您可以在 http://try.freemarker.org/ 上测试您的语法。 (当然,您不会有相同的数据模型,也可能不会有相同的 FreeMarker 版本,但在本例中,它会告诉您问题是什么)。

关于java - 带有 Freemarker 的 Netbeans 模板 : built-in with argument fails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46351073/

相关文章:

c++ - 采用 lambda 的模板类的类型推导

java - 为什么调用 fail() 在使用 JUnit 的 Java 类中编译

java - 读取 URL 的完整 HTML 内容并将其保存到文本文件

java - 在新实体中保存映射集合

java - 两个日期之间的所有日期输出错误

java - 将基于 Java 的 GUI (Netbeans) 与 Python 代码 (PyCharm) 连接

java - Netbeans 模块中的 Guava getTopLevelClasses 找不到类

java - 如何从不同的 Java 代码执行 Runnable JAR 的 main 方法?

c++ - 在 CUDA 设备代码和主机代码中创建模板类对象时未解析的外部函数

c++ - 特化内部类