2017-09-21 20 views
0

我設置了一些自定義Netbeans Java模板。當我使用沒有參數的內置函數(如${name?lower_case})時,我的模板工作正常。但是,當我使用帶參數的函數時,最終會出現錯誤(生成的文件爲空)。具有Freemarker的Ne​​tbeans模板:內置參數失敗

所謂的功能是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字逃逸行情沒有幫助既不

編輯&解決方案

  • 在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%\應用程序數據\漫遊\ {的NetBeans版本的NetBeans} \設置\模板

回答

1

正確的語法是<#assign type = name?remove_ending("View")> localed。那裏不需要${}

此外,我不知道NetBeans,但必須至少有一些日誌,告訴你錯誤是什麼。 (它默默地給你空的輸出,沒有任何錯誤彈出窗口,對用戶來說不是很方便,可能值得在NetBeans中填寫一個bug報告。)如果沒有,你可以在http://try.freemarker.org/上測試你的語法(當然你贏了沒有相同的數據模型,也沒有相同的FreeMarker版本,但是在這種情況下,它會告訴你問題是什麼)。

+0

感謝您的答案,日誌提示和正確的語法是救世主!我編輯了我的問題以突出顯示Netbeans日誌路徑。太糟糕了,Netbeans不支持'remove_ending'。我會稍後再深入... – Al1

+0

他們只需要升級FreeMarker,因爲2.3.x版本是向後兼容的。 (好吧,假設他們沒有分叉並修改它們的內容......) – ddekany