Синтаксис NVelocity для вызова методов с оцененными параметрами - PullRequest
2 голосов
/ 15 июля 2010

У меня есть довольно простой шаблон, из которого мне нужно сделать вызов метода.Однако 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}).

Есть ли способ передать переменную методу, чтобы лениво получить вышеуказанный шаблон для оценкиправильно?

1 Ответ

3 голосов
/ 15 июля 2010

Если у вас возникли проблемы, скорее всего, это связано с типами переменных или доступностью метода.Я построил и протестировал следующее:

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

Можем ли мы увидеть код дляваши методы расширения?

...