2016-12-06 19 views
-1

has_contentを使用して、ブール値としてテストする前にマッププロパティが空でないかどうかをチェックしようとしています。データモデル(痛みを伴うと退屈な理由による)ブール値の代わりに空の文字列をフィールドに入力します。私がしようしかしFreemarker "has_content" builtinが予期しないエラーの原因となる

<#if (mecflag?has_content && mecflag)> 

(意味変数が空ではない、それはブールtrueだ場合ならば、私は」、と思う)、私はエラーを取得します。エラーは、Freemarkerのが好きではないと言います。。。

0: has_contentはキャメルケース識別子ではないことを本当に奇妙思われる

私は現在の安定Freemarkerの、2.3.25だと思うものを使用してい

エラーテキスト事実

命名規則の不一致。ユーザーが指定したものではなく、テンプレート言語の一部である識別子は、同じテンプレート内で同じ命名規則を一貫して使用する必要があります。このテンプレートは、行37、列121でトークン "upperCase"によって自動検出によって設定されたラクテルケース命名規則(exampleNameなど)を使用しますが、問題のあるトークン "has_content"は別の規則を使用します。

答えて

0

それほど時間がかかりませんでした。

Freemarkerは、のラクダケースまたは組み込み名の「_」バージョンのいずれかで動作するようです。したがって、?hasContentは、?has_contentと同様に機能します。ドキュメントはやや矛盾しています。

「命名規則が一致しません」というエラーが表示された場合は、builtInに対して?built_inbuiltInの使用をチェックし、どちらか一方を選択してください。

+1

はい、あなたの質問に引用したエラーメッセージには同じことが示されていませんか?また、これに関してドキュメントが一貫していない場所を教えてください。 – ddekany

+0

@ddekanyよく、私は 'has_content'のような文書を' has_content'で見つけました。私は '' upperCase'などについて既に知っていました。Freemarkerが 'upper_case'と' upperCase'または 'has_content'と' hasContent'の両方を受け入れることは知らなかった時点では、エラーメッセージはまったく役に立ちませんでした。私はどのようにドキュメントを改善できるか分かりません。 – Pointy

+0

@ddekanyが言った、私はFreemarkerのメンテナーであることに感謝します。それは素晴らしいツールです。 – Pointy

関連する問題