2017-09-21 8 views
0

カスタムNetbeans Javaテンプレートを設定しています。私が${name?lower_case}のような引数なしで組み込み関数を使用しているとき、私のテンプレートは正常に動作します。しかし、引数を指定して関数を使用すると、エラーが発生します(生成されたファイルは空です)。Freemarkerを使用したNetbeansテンプレート:引数付き組み込みが失敗する

いわゆる関数は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}>{ 

} 

私はいくつかのインポートを逃したが、機能が言われている場合、私は疑問に思いますが内蔵されているので、私はそれが利用可能であると仮定した。

  • どちら

を助けにはならなかった私は、成功

  • type = "${name?remove_ending("View")}"(二重引用符)を有するか、View単語の前後に引用符をエスケープせずに、テンプレートの上部に<#ftl>を追加しようとしました編集&解決策

    • Netbeansログは%USER_HOME%/ AppData/Roaming/NetBeans/{netbeans version} /var/log/messages.logにあります。
    • FreeMarker Netbeans 8.2のどのバージョンが使用されていますかコマンドremove_endingは単に利用できませんでした。私は、name?substring(0, name?length - 4)
    • テンプレートファイルが正しい構文は<#assign type = name?remove_ending("View")>ある%USER_HOME%\のAppData \ローミング\のNetBeans {NetBeansのバージョン} \ CONFIG \テンプレート
  • 答えて

    1

    にlocaledれる使用しました。そこには${}が必要です。

    また、NetBeansについてはわかりませんが、エラーの内容を示す少なくともいくつかのログが必要です。 (エラーポップアップを使わずに空の出力を静かに与えることは、ユーザの使い勝手が悪いとは言いませんが、NetBeansでバグ報告を書き込む価値があります。)もしそうでなければ、http://try.freemarker.org/でテストすることができます同じデータモデル、あるいはおそらく同じFreeMarkerバージョンを持っていませんが、この例では、問題の内容がわかります)。

    +0

    答えをいただきありがとうございます、ログヒントと正しい構文は救世主でした! Netbeansログのパスを強調表示するために私の質問を編集しました。 Netbeansは 'remove_ending'をサポートしていません。後でその点を掘り下げます... – Al1

    +0

    2.3.xのバージョンは下位互換性があるので、FreeMarkerをアップグレードするだけです。 (まあ、彼らはフォークしていないと仮定して、彼らが持っているものを修正しました...) – ddekany

    関連する問題