一、后端 Person 实体代码(C#)
public class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
//无参构造
public Person(){}
//带参构造
public Person(string name, int age)
{
this.name = name;
this.age = age;
}
//无参实例方法
public string getMyName()
{
return this.name;
}
//多参数实例方法
public string JoinStr(string str1, string str2)
{
return str1 + str2;
}
}Code language: C# (cs)
cs后端代码中设置对象变量
Person pTest = new Person("Tom", 22);
context.Put("pTest", pTest);Code language: JavaScript (javascript)
二、VTL模板代码 & 渲染说明
方法的调用<br />
$pTest.getMyName();
#set($a = "hello")
#set($b = "foxdevelop")
$pTest.JoinStr($a, $b);Code language: PHP (php)
1. $pTest.getMyName()
- 调用对象无参方法
getMyName() - 返回
Tom
✅ Velocity 调用无参方法:括号
()可以省略,$pTest.getMyName等价$pTest.getMyName()
2. $pTest.JoinStr($a, $b)
- 调用带两个字符串参数的方法
- VTL 会先解析
$a、$b,传入实参"hello"、"foxdevelop" - 返回拼接结果:
hellofoxdevelop
总结
- 方法名大小写严格匹配
C#getMyName()≠GetMyName(),模板必须和代码写法一致。 - 传参直接写变量
不需要额外引号,$pTest.JoinStr($a,$b)正确;不要写成$pTest.JoinStr("$a","$b")(会传递字面字符串”$a”) - 属性 vs 方法区分
$pTest.Name→ 访问属性(getter)$pTest.getMyName()→ 调用方法
- 返回值自动输出
模板里直接写$对象.方法(),Velocity会自动打印方法返回值;如果不需要输出,用#set接收结果:
#set($result = $pTest.JoinStr($a,$b))Code language: PHP (php)
三、最终页面渲染输出
方法的调用
Tom;
hellofoxdevelop;