بناء جملة NVelocity لاستدعاء الأساليب ذات المعلمات التي تم تقييمها
سؤال
لدي قالب بسيط إلى حد ما وأحتاج إلى إجراء استدعاء طريقة منه.ومع ذلك، لا يبدو أن NVelocity تقوم بتقييم معلمات الطريقة نفسها متغيرات السرعة.خذ قالب NVelocity التالي:
#if (--- CONDITION SNIPPED ---)
<blockquote class="column span-4">
I MADE IT!
</blockquote>
#else
<blockquote class="column span-4">
$extensionMethods.TestMethod(${var1})
</blockquote>
#end
في القالب أعلاه، $extensionMethods
يتم تمريره كمثال لفئة ويعمل بشكل رائع عند تمرير الأرقام المقدرة (على سبيل المثال. $extensionMethods.TestMethod(4)
يعمل في كل مرة).ومع ذلك، باستخدام $var1
يؤدي إلى إرجاع السلسلة بأكملها كما هي: $extensionMethods.TestMethod(${var1})
.
هل هناك طريقة لتمرير متغير إلى طريقة بتكاسل للحصول على القالب أعلاه لتقييمه بشكل صحيح؟
المحلول
إذا كنت تواجه مشكلة، فمن المحتمل أن يكون الأمر متعلقًا بأنواع المتغيرات لديك، أو بتوفر الطريقة.لقد قمت ببناء واختبار ما يلي:
public class TestClass
{
#region Methods
public string DoSomething(string name)
{
return name.ToUpperInvariant();
}
public string DoSomethingElse(int age)
{
return (age*10).ToString();
}
#endregion
}
والقالب الخاص بي :
#set($myVar = "matt")
#set($myVar2 = 10)
Name: $test.DoSomething(${myVar})
Age: $test.DoSomethingElse(${myVar2})
و الإخراج:
Name: "MATT"
Age: 100
هل يمكننا رؤية بعض التعليمات البرمجية لطرق التمديد الخاصة بك؟