2010-07-14 60 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