NVelocity是一个基于.NET的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由.NET代码定义的对象。
比如我们要使用NVelocity构造一个语句:您好张三,今天是星期天。
如果我们要动态替换“张三”和“星期天”两部分为具体的值,则可以使用NVelocity语法构造这段话:
您好${xx},今天是${yyy}。
其中xx和yyy表示NVelocity的变量,在调用时传入具体的变量值。
取值:
1、变量:如果参数是普通文本,或者数值等等,则直接使用:${Name}这样的取数方法;
2、属性:如果参数是一个对象,要取对象的属性值则可以这么做:${cust.Name}或者${cust.Tel}等等;
3、方法:如果参数是一个对象,想调用这个对象的某个方法,那么可以这么做,如:${utils.ToCapital("123.45")} 其中utils参数就是一个对象,ToCapital就是这个对象的某个方法;
循环:
NVelocity的循环需要使用foreach命令,比如要循环某个子表则首先通过上面的“方法”从主表中获得子表数据后进行循环,以客户联系人CustomerContact子表为例:
取子表数据:${data.GetChild("CustomerContact")}
赋值给变量:#set($child=${data.GetChild("CustomerContact")})
遍历过程中要获得联系人子表中当前行的某个“__Name__”字段的值,则使用下面的方法:
${child.GetValue($item,"__Name__")}
注意:#foreach和#end必须成对出现,有#foreach必须要有#end,否则报错。
条件判断:
某些时候,需要根据条件判断是否显示某个段落或者某些信息,则需要使用到NVelocity的if命令,比如当客户评级为A时,显示一个“优质客户”标签,则可以使用这样的条件命令:
#if(${data.GetValue("__Level__")=="A"}
优质客户!
#end
注意:#if和#end必须成对出现,有#if必须要有#end,否则报错。
赋值:
赋值就是把某个值赋给某个变量,比如前面“循环”中我们取子表数据赋值给child变量,用于后面的循环,就用到了:
#set($child=${data.GetChild("CustomerContact")})