我有一个相当简单的模板,我需要从中进行方法调用。但是,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})
。
有没有办法懒惰地将变量传递给方法以使上述模板正确评估?
答案 0 :(得分:3)
如果遇到问题,可能与您的变量类型或方法可用性有关。我已经构建并测试了以下内容:
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
我们可以看一些扩展方法的代码吗?