2016-12-06 2 views
-1

Ich versuche has_content zu verwenden, um zu überprüfen, ob eine Map-Eigenschaft nicht leer ist, bevor Sie es als Boolean testen, weil das Datenmodell (aus Gründen, die schmerzhaft und langwierig sind) manchmal füllen Sie das Feld mit einer leeren Zeichenfolge anstelle eines Boolean.Freemarker "has_content" eingebaut verursacht unerwarteten Fehler

aber wenn ich versuche,

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

(Bedeutung, denke ich „, wenn die Variable nicht leer ist und wenn es Boolean ist true), erhalte ich einen Fehler. Der Fehler besagt, dass Freemarker nicht mag .. die Tatsache, dass has_content kein Kamel-Fall Kennung das scheint wirklich seltsam

ich verwende, was ich denke, die aktuelle stabile Freemarker ist, 2.3.25

der Fehlertext:.

Namenskonvention stimmt nicht überein. Bezeichner, die Teil der Vorlagensprache sind (nicht die vom Benutzer angegebenen), müssen konsistent die gleiche Namenskonvention innerhalb derselben Vorlage verwenden. Diese Vorlage verwendet die camel case-Namenskonvention (wie: exampleName), die durch automatische Erkennung in Zeile 37, Spalte 121 vom Token "upperCase" erstellt wurde, aber das problematische Token "has_content" verwendet eine andere Konvention.

Antwort

0

Nun, das dauerte nicht lange.

Anscheinend kann Freemarker mit entweder camel-case oder "_" Versionen der eingebauten Namen arbeiten. Somit funktioniert ?hasContent genauso gut wie ?has_content. Die Dokumentation ist etwas inkonsistent.

Also: Wenn Sie den Fehler "Namenskonvention Mismatch" erhalten, überprüfen Sie Ihre Verwendung von ?built_in gegenüber builtIn über die Vorlagendatei und wählen Sie die eine oder andere.

+1

Ja, aber sagt die Fehlermeldung, die Sie in Ihrer Frage zitiert haben, nicht dasselbe? Kannst du auch sagen, wo die Dokumentation inkonsistent ist? – ddekany

+0

@ddekany Nun habe ich 'has_content' in der Dokumentation gefunden, die so geschrieben ist -' has_content'. Ich wusste bereits von '? UpperCase' usw. Zu einem Zeitpunkt, als ich keine Ahnung hatte, dass Freemarker sowohl' upper_case' als auch 'upperCase' oder' has_content' und 'hasContent' akzeptierte, war die Fehlermeldung überhaupt nicht hilfreich . Ich bin nicht sicher, wie die Dokumentation verbessert werden könnte. – Pointy

+0

@ddekany das sagte, ich danke Ihnen für die Erhaltung der Freemarker. Es ist ein großartiges Werkzeug. – Pointy

Verwandte Themen