- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
每个人应该知道的NVelocity用法
NVelocity是一个基于.NET的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由.NET代码定义的对象。从而使得界面设计人员与.NET程序开发人员基本分离。
?一、nVelocity的常用功能简介
? ? 1、 在页面中定义变量,并进行简单的运算。
? ? 2、 在页面中获得对后台程序实体对象的引用。
? ? 3、 在页面中迭代实体对象集合。
? ? 4、 在页面中获得实体对象的属性,及其方法。
? ? 5、 对逻辑判断语句的支持。
? ? 6、 对外部文件的引用。
? ? 7、 对外部文件的解析。
二、nVelocity的工作原理
? ? 可以使用.NET的反射实现。以下是nVelocity对迭代实体类的简单实现步骤:
? ? 1、 定义People类,并拥有Name与Sex属性。表示一个人。
? ? 2、 在页面中列出人物列表,则输入以下代码:
? ? ? ? #foreach($p in $ps)
? ? ? ? ? p欢迎您:$p.Name/p
? ? ? ? #end
? ? 3、 获取人物列表,保存在_List中。并指定页面中的字符串“ps”对应_List。
? ? 4、以文本方式读取模板文件,并匹配#foreach…#end段,如果匹配到则继续匹配$X in $XX 段,分别记录用于保存集合与单项的字符,本次为“p”与“ps”。
? ? 5 、用Type对象的GetProperties()方法获取_list中每一项的所有属性,并在#foreach ?#end段中循环将$p + 属性名称替换为当前对象的当前属性的值。当然如果要调用对象的方法也可以用同样的方式获得。
三、基本语法
? ? ?1、特殊字符介绍
? ? ? ? ?A、“#”:表示开始做什么事情。
? ? ? ? ?B、“$”:表示用于获得什么。(以$开头的表示“引用”意思是取得一些东东.可引用变量,属性,方法)
? ? ? ? ?C、“##“:单行注释。
? ? ? ? ?D、 “#*… …*#”:多行注释。
? ? ?2、关键字
? ? ? ? ? A、 Set:开始做什么事情,比如定义变量,给变量重新赋值等。(注意:如果右边的操作数是一个属性或命令的引用而返回null,那么赋值将不会成功,且在随 后的VTL中也不能再取出使用,如果要用做if条件,一个解决办法是,先给变量赋一个值,然后再将一个属性或命令的引用赋给该变量)
? ? ? ? ? B、 Foreach:迭代语句
? ? ? ? ? C、 If:条件判断语句
? ? ? ? ? D、 Elseif
? ? ? ? ? E、 Else
? ? ? ? ? F、 Include:对外部文件的引用,开始位置为模板路径。
? ? ? ? ? G、 Parse:对外部文件的引用,并用nVelocity方式解析。
? ? ? ? ? H、 Macro:创建宏,可以重复做某件事,类似于方法。
? ? ? ? ? I、 ?Even:双数执行
? ? ? ? ? J、 ?Odd :单数执行
? ? ? ? ? K、 Each:每次都执行
? ? (备注:所有变量在未定义之前不能使用(因为我们习惯了有全局变量的习惯),一个合法的VTL标示符是以一个字母开头的。.NET后台定义的对象除外。模 板语言区分大小写,所有的关键字必须为小写,默认情况下,NVelocity解析是不分大小写的,当然可以通过设置 runtime.strict.math=true,采用严格解析模式。)
四、使用示例
? ? 1、 ?在页面中使用变量
? ? ? ? 定义变量:#set($a = “CNF”)
? ? ? ? 引用变量:欢迎光临:$a
? ? ? ? ?定义变量:#set($a = 1)
? ? ? ? ?运算:#set($a = $a + 1)
? ? ? ? ?输出:$a ? ##得:2
? ? ? ? ?运算:#set($a = $a*5)
? ? ? ? ?输出:$a ? ##得:10
? ? ? ?#set( $criteria = [name, address] )
? ? ? ? ?#foreach( $criterion in $criteria )
? ? ? ? ? ? ? ?#set( $result = false ) ?//先设置默认值
? ? ? ? ? ? ? ?#set( $result = $query.criteria($criterion) )
? ? ? ? ? ? ? ?#if( $result )
? ? ? ? ? ? ? ? ? ? ? ?Query was su
文档评论(0)