【问题标题】:Netbeans template with Freemarker: built-in with argument fails带有 Freemarker 的 Netbeans 模板:带参数的内置失败
【发布时间】:2018-03-03 05:28:00
【问题描述】:

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

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

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

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

import com.company.project.AbstractClass;

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

}

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

  • 我尝试在模板顶部添加&lt;#ftl&gt;,但没有成功
  • View 单词周围使用type = "${name?remove_ending("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

【问题讨论】:

    标签: java templates netbeans freemarker


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答,日志提示和正确的语法是救星!我编辑了我的问题以突出显示 Netbeans 日志路径。太糟糕了,Netbeans 不支持remove_ending。我稍后会挖掘这一点......
    • 他们只需要升级 FreeMarker,因为 2.3.x 版本是向后兼容的。 (好吧,假设他们没有分叉和修改他们拥有的东西......)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 2014-09-08
    • 2018-04-06
    • 2015-02-09
    • 1970-01-01
    相关资源
    最近更新 更多