NVelocity-Syntax zum Aufrufen von Methoden mit ausgewerteten Parametern
Frage
Ich habe eine ziemlich einfache Vorlage, aus der ich einen Methodenaufruf durchführen muss.NVelocity scheint jedoch keine Methodenparameter auszuwerten, die selbst vorhanden sind NVelocity-Variablen.Nehmen Sie die folgende NVelocity-Vorlage:
#if (--- CONDITION SNIPPED ---)
<blockquote class="column span-4">
I MADE IT!
</blockquote>
#else
<blockquote class="column span-4">
$extensionMethods.TestMethod(${var1})
</blockquote>
#end
In der obigen Vorlage $extensionMethods
wird als Instanz einer Klasse übergeben und funktioniert wunderbar bei der Übergabe ausgewerteter Zahlen (z. B. $extensionMethods.TestMethod(4)
funktioniert jedes Mal).Allerdings mit $var1
bewirkt, dass die gesamte Zeichenfolge unverändert zurückgegeben wird: $extensionMethods.TestMethod(${var1})
.
Gibt es eine Möglichkeit, eine Variable langsam an eine Methode zu übergeben, damit die obige Vorlage korrekt ausgewertet wird?
Lösung
Wenn Sie Probleme haben, liegt das wahrscheinlich an Ihren Variablentypen oder der Verfügbarkeit der Methode.Ich habe Folgendes gebaut und getestet:
public class TestClass
{
#region Methods
public string DoSomething(string name)
{
return name.ToUpperInvariant();
}
public string DoSomethingElse(int age)
{
return (age*10).ToString();
}
#endregion
}
Und meine Vorlage:
#set($myVar = "matt")
#set($myVar2 = 10)
Name: $test.DoSomething(${myVar})
Age: $test.DoSomethingElse(${myVar2})
Und die Ausgabe:
Name: "MATT"
Age: 100
Können wir Code für Ihre Erweiterungsmethoden sehen?