2010-07-14 25 views
2

我有一个相当简单的模板,我需要从中进行方法调用。但是,NVelocity似乎没有评估自己的方法参数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})

有没有办法将变量传递给一个方法懒洋洋地获得上述模板正确评估?

回答

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 

我们可以看到你的扩展方法的一些代码?

+0

感谢马修,我花了一些时间修改代码,并意识到我上面提供的示例过于简化。我已经设法修复了代码,但我仍然相信NVelocity中存在一个错误。我会在下面的帖子中解释。 – 2010-07-15 15:28:04