Simuler des paramètres null dans les macros Freemarker

Je suis en train de construire un site à l'aide de Freemarker et ont commencé à fortement à l'aide de macros. Je sais que dans Freemarker 2.3 que le passage d'une valeur null dans une macro en tant que paramètre est équivalent à ne pas passer d'un paramètre à tous j'ai donc créé une variable globale appelée "null" pour simuler null vérifier dans mes macros:

<#assign null="NUL" />

Maintenant dans mes macros je peux le faire:

<#maco doSomething param1=null>
  <#if param1 != null>
    <div>WIN!</div>
  </#if>
</#macro>

Le problème vient, si je veux passer un paramètre qui n'est pas un scalaire. Par exemple, le passage d'une Liste (qui en Freemarker est un SimpleSequence) à la une de la macro et de la vérification à l'encontre de mon mot clé null rendements de l'erreur:

freemarker.de modèle.TemplateException:
La seule juridique des comparaisons entre
deux nombres, deux chaînes de caractères, ou les deux
des dates. De la main gauche opérande est une
freemarker.de modèle.SimpleSequence
De la main droite opérande est une
freemarker.de modèle.SimpleScalar

J'ai pris un coup d'oeil à la freemarker code et je peux voir le problème (ComparisonExpression.isTrue()):

if(ltm instanceof TemplateNumberModel && rtm instanceof TemplateNumberModel) { 
  ...
}
else if(ltm instanceof TemplateDateModel && rtm instanceof TemplateDateModel) {
  ...
}
else if(ltm instanceof TemplateScalarModel && rtm instanceof TemplateScalarModel) {
  ...
}
else if(ltm instanceof TemplateBooleanModel && rtm instanceof TemplateBooleanModel) {
  ...
}
//Here we handle compatibility issues
else if(env.isClassicCompatible()) {
  ...
}
else {
  throw new TemplateException("The only legal comparisons...", env);
}

Donc la seule solution que je vois est de définir isClassicCompatible à true, ce qui je pense va appeler toString() sur les deux objets, et de comparer le résultat. Toutefois, la documentation spécifiquement dit quoi que ce soit en s'appuyant sur d'anciennes fonctionnalités doivent être réécrites.

Ma quesion est, est-il une solution à ce qui ne repose pas sur les fonctions obsolètes?

source d'informationauteur Cameron