Syntaxe NVelocity pour appeler des méthodes avec des paramètres évalués
Question
J'ai un modèle assez simple à partir duquel je dois effectuer un appel de méthode.Cependant, NVelocity ne semble pas évaluer les paramètres de la méthode qui sont eux-mêmes Variables de vitesse.Prenez le modèle NVelocity suivant :
#if (--- CONDITION SNIPPED ---)
<blockquote class="column span-4">
I MADE IT!
</blockquote>
#else
<blockquote class="column span-4">
$extensionMethods.TestMethod(${var1})
</blockquote>
#end
Dans le modèle ci-dessus, $extensionMethods
est transmis en tant qu'instance d'une classe et fonctionne à merveille lors de la transmission de nombres évalués (par ex. $extensionMethods.TestMethod(4)
fonctionne à chaque fois).Cependant, en utilisant $var1
fait que la chaîne entière est renvoyée telle quelle : $extensionMethods.TestMethod(${var1})
.
Existe-t-il un moyen de transmettre paresseusement une variable à une méthode pour que le modèle ci-dessus soit évalué correctement ?
La solution
Si vous rencontrez des problèmes, cela est probablement dû à vos types de variables ou à la disponibilité de la méthode.J'ai construit et testé ce qui suit :
public class TestClass
{
#region Methods
public string DoSomething(string name)
{
return name.ToUpperInvariant();
}
public string DoSomethingElse(int age)
{
return (age*10).ToString();
}
#endregion
}
Et mon modèle :
#set($myVar = "matt")
#set($myVar2 = 10)
Name: $test.DoSomething(${myVar})
Age: $test.DoSomethingElse(${myVar2})
Et le résultat :
Name: "MATT"
Age: 100
Pouvons-nous voir du code pour vos méthodes d'extension ?