带Freemarker的Ne​​tbeans模板:内置参数失败

时间:2017-09-21 18:40:27

标签: java templates netbeans freemarker

我正在设置一些自定义Netbeans Java模板。当我使用没有${name?lower_case}等参数的内置函数时,我的模板运行正常。但是,当我使用带参数的函数时,我最终会出错(生成的文件为空)。

所谓的功能是removing_ending。我有一个 Test.java ,我想生成一个 TestView.java ,它依赖于 Test.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(双引号)或转义引号并没有帮助

编辑&amp;溶液

  • 在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 version} \ config \ Templates

1 个答案:

答案 0 :(得分:1)

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

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