老大终于给我们布置了实战性的任务。嘿嘿。想到自己做的东西可能要被千千万万的人看到,心里有点小兴奋。
不过,老大的任务里有个东西我以前没有接触过。所以今天一天都在学习这个——nvelocity。嘿嘿。现在把我的学习笔记贴出来,供以后参考。嘿嘿。
1、
NVelocity
是
Velocity
在
.NET
平台上的一个实现。
2、
原来的
xml
是这个样子的:
<?xml version=’1.0’ encoding=’utf-8’?>
<users count=’
用户人数
’ title=’
标题
’>
<!—
要是可以在这里来个循环,把用户循环显示出来就好了
à
<user>
<name>
用户名
</name>
<sex>
性别
</sex>
<city>
城市
</city>
</user>
<users>
生成貌似上面
xml
格式数据的模板应该怎么写?如下代码:
<?xml version=’1.0’ encoding=’utf-8’?>
#foreach($u in $ListUsers)
#beforeall
<users count=’$Count’ title=’$Title’>
#each
<user>
<name>$u.Name</name>
<sex>$u.Sex</sex>
<city>$u.City</city>
</user>
#afterall
</users>
#nodata
<users>
暂无用户资料
</users>
#end
然后看看在服务器端怎么调用这个模板,并传给这个模板
listUsers
这个参数:
//
获取到用户列表
IList<UserInfo> listUsers=UserInfoService.GetAllUsers();
//
创建一个模板引擎
VelocityEngine vltEngine=new VelocityEngine();
//
文件型模板,还可以是
assembly
,则使用资源文件
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER,”file”);
//
模板存放目录
vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH,Server.MapPath(“~/Template”));
vltEngine.Init();
//
定义一个模板上下文
VelocityContext vltContext=new VelocityContext();
//
传入模板所需要的参数
vltContext.Put(“Title”,”NVelocity
文件模板例子
”);
vltContext.Put(“Count”,listUsers.Count);
vltContext.Put(“ListUsers”,listUsers);
//
获取我们刚才所定义的模板,上面已设置模板目录,此处用相对路径即可
Template vltTemplate=vltEngine.GetTemplate(“users.xml”);
//
定义一个字符串输出流
StringWriter vltWriter=new StringWriter();
//
根据模板的上下文,将模板生成的内容写进刚才定义的字符串输出流中
vltTemplate.Merge(vltContext,vltWriter);
//
输出字符串流中的数据
Response.Write(vltWriter.GetStringBuilder().ToString());
3、
nVelocity
是一个基于
.NET
的模板引擎(
template engine
)。它允许任何人仅仅简单的使用模板语言(
template language
)来引用由
.NET
代码定义的对象。
4、
VTL
——
nVelocity template language
5、
Velocity
中仅
String
可以被赋值给变量。使用方式:
#set($a=”Velocity”)
6、
关于
Nvelocity
的语法:
1、
单行注释:
##
单行注释
2、
多行注释:
#*
多行注释
多行注释
*#
3
、文档格式:
#**
这是一个
VTL
注释块
可以用来存储这些信息文档的作者
及版本信息
:
@version 5
@author
**#
4、
在
VTL
中有三种类型的
references
:变量(
variables
)、属性(
properties
)、方法(
methods
)。
5、
VTL
中的一切
reference
可以作为一个
String
对象处理。
6、
属性的例子:
$customer.Address
$purchase.Total
$customer.Address
有两种含义,它可以表示:查找
hashtable
对象
customer
中以
Address
为关键字的值;也可以表示调用
customer
对象的
getAddress()
方法。
7、
方法就是被定义在
.NET
中的一段代码,并且它有完成某些有用工作的能力。例如:
$customer.getAddress()
$purchase.getTotal()
$page.setTitle(“My Home Page”)
$person.setAttribute([“Strange”,”Weird”,”Excited”])
VTL
属性可以作为
VTL
方法的缩写。
$customer.Address
属性和使用
$customer.getAddress()
方法具有相同的效果。使用属性的方式比较合理。属性和方法的不同点在于你能够给一个方法指定一个参数列表。
8、
可以使用如下这种方式给文本框传值:
<input type=”text” name=”email” value=”$!email” />
或者:
<input type=”text” name=”email” value=”$!{email}” />
9、
在
VTL
中使用
$2.5
这样的货币标识是没有问题的,因为
VTL
中的
reference
总是以一个大写或者小写的字母开始。
10、
VTL
中使用
”
作为转义字符。
#set($email=”foo”)
$email
“$email
“”$email
“””$email
对应的输出如下:
Foo
$email
“foo
“”$email
11、
咋正在
VTL
中定义变量呢?是通过
#set($email=”foo”)
这样的方式吗?
#set($foo=”gibbous”)
$moon=$foo
的输出结果是:
$moon=gibbous
12、
赋值
#set
被用来设这一个
reference
的值。如:
#set($foo=”abd”)
等号左边是一个变量或者属性
reference
,右侧可以是变量
/
字符串
/
属性
/
方法
/
数字
/ArrayList
请看下面的例子:
#set($foo=$bill)
##
变量
referen
#set($foo.Friend=”mone”)
##
字符串
#set($foo.ban=$whke.lean)
##
属性
reference
#set($foo.plan=$soss.wef($web))
##
方法
reference
#set($foo.num=123)
##
数字
#set($foo.say=[“not”,”my”,”own”])
##ArrayList
注意:
ArrayList
的取值方法为:
$foo.say.get(0)
#set($value=$foo+1)
##
右侧也可以是简单的算术运算,如加减乘除
13、
使用
#setdirective
时,字符串被封闭在一对双引号内。如:
#set($foo=”www”)
$set($fnn=”abd.vm”)
#set($fcc=”$foo/$fnn”)
$fcc
得到的结果是:
www/abc.vm
但是,当字符串被封装在单引号内时,它将不被解析。
上面这个特性可以通过修改
Views
目录下的
nvelocity.properties
文件的
stringliterals.interpolate=false
的值来改变上面的特性是否有效。
14、
条件语句
if/elseif/else
1、
Nvelocity
的常用功能简介
A、
在页面定义变量,并进行简单的运算。
B、
在页面获得对后台程序实体对象的引用。
C、
在页面中迭代实体对象集合。
D、
在页面中获得实体对象的属性及其方法。
E、
对逻辑判读语句的支持。
F、
对外部文件的引用。
G、
对外部文件的解析。
2、
基本语法:
1、
特殊字符介绍:
#
表示开始做什么事情
$
表示用于获得什么
##
单行注释
#*…*#
多行注释
2、
关键字
set
开始做什么事情,比如定义变量,给变量重新赋值等
foreach
迭代语句
if
条件判断语句
elseif
else
include
对外部文件的引用,开始位置为模板路径
parse
对外部文件的引用,并用
nvelocity
方式解析
macro
创建宏,可以重复做某件事,类似于方法
even
双数执行
odd
单数执行
each
每次都执行
注意:所有的变量在未定义之前不能使用。
.NET
后台定义的对象除外。模板语言区分大小写,所有的关键字必须小写。上面的列表不是很全。
3、
创建宏。可以当做方法使用。
创建:
#macro(Add $a $b)
#set($c=$a+$b)
<p>
最后的结果:
</p>
#end
调用:
#Add(1 2)
注意:模板引擎的初始化方法有三种:一种参数为模板文件内容,一种是带模板文件地址。另一种就是假如在宏里面引入一个判断语句,则可以实现递归调用。这里有个问题:如果是带模板文件地址的话,发现模板文件内容
yoga
宏的时候好像有点问题。???
4、
使用对象方法
定义变量:
#set($str=”cnf”)
调用方法:
$str.SubString(0,1)
输出:
c
定义变量:
#set($a=123)
调用方法:
$a.GetType()
输出:
System.Int32
注意:不管是
.NET
代码定义的对象,还是设计人员在页面中定义的变量,都可以使用对象的方法和属性。???(意思是都可以用
c#
中的方法吗?)
5、
使用
even
与
odd
简化代码,
each
辅助
#foreach($p in $ps)
#even
<p>
双行:
$p.StrName</p>
#odd
<p>
单行:
$p.StrSex</p>
#end
注意:在使用这两个关键字时,出现了与创建宏一样的问题,即在初始化模板引擎的时候,如果是用模板文件内容初始化的,会出现问题。?????????(不懂)
6、
引用外部文件
Include
与
parse
都有引入外部文件的作用,不同的是
parse
会根据
nvelocity
模板语言解析外部文件。也就是说如果引入当前模板,会出现死循环。
7、
#foreach
语句必须以
#end
结束
8、
创建数组
创建:
#set($List=[“
男
”,”
女
”])
遍历:
#foreach($Item in $List)
<p>List
成员:
$Item</p>
#end
输出:
List
成员:男
List
成员:女
转自:http://hi.baidu.com/%C4%E9%C9%F9/blog/item/c975661536d8746fcb80c40d.html
相关推荐
刘冬编写的Spring.NET学习笔记26——整合NVelocity例子。 原文:http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_NVelocity.html
NVelocity是Java模板引擎...要使用NVelocity模板技术需要学习VTL语言。网络上关于NVelocity的VTL语言介绍的比较少,不过没有关系,由于NVelocity是有Velocity移植过来的所以Velocity的VTL语言完全适用于NVelocity。
NVelocity是.NET平台上的一个模板引擎,它源自Java的Velocity模板语言,并且被广泛用于生成动态HTML、XML、电子...当然,这只是NVelocity的一部分功能,更深入的学习和实践将帮助你更好地理解和利用这个强大的工具。
**NVelocity模板引擎详解** NVelocity是开源的Java模板引擎,但在.NET环境中也有广泛应用,它是一种强大的、可扩展的模板语言,主要用于生成动态内容。NVelocity允许开发者将HTML或者其他格式的文档与业务逻辑分离...
NVelocity是一款强大的、开源的模板引擎,最初是为Java平台设计的,但通过特定的封装,它也能够被C#开发者...通过学习NVelocity文档,如`NVelocity语法.doc`,你可以更深入地了解其高级特性,并将其应用到实际项目中。
1. **模板语言**:NVelocity使用自己的模板语言(VTL, Velocity Template Language),这是一种非脚本语言,设计简洁,易于学习和使用。VTL使得开发者能够通过简单的指令(如`#set`, `#if`, `#foreach`等)来控制...
NVelocity语法 NVelocity是一种基于模板的template engine,用于生成动态网页内容。下面是NVelocity语法的详细知识点: 变量和表达式 在NVelocity中,变量是通过 `$`符号来声明的,例如 `$customer.Name`。变量...
在.NET环境中,NVelocity为开发者提供了便利的方式来生成静态或动态的输出,例如邮件模板、报告或者像在本例中的学员管理系统中的界面展示。 本项目“使用NVelocity实现的简单学员管理”显然利用了NVelocity的强大...
学习NVelocity,可以从以下几个方面入手: - 理解基础语法:深入学习变量、方法调用、注释、条件和循环等基本元素。 - 学习上下文管理:如何在Java代码中创建和管理上下文对象,将数据传入模板。 - 掌握模板指令:...
** Velocity文档和NVelocity类库** Velocity是一款强大的模板引擎,源于Apache软件基金会,它被广泛应用于Java应用程序中,用于生成动态...通过深入学习和实践,我们可以充分利用这些工具,提升软件开发的效率和质量。
1. **易用性**:模板语言简单直观,易于学习,非程序员也能快速上手。 2. **可扩展性**:支持自定义宏和指令,方便创建复用的模板元素。 3. **安全**:通过严格的上下文访问控制,防止模板执行恶意代码。 4. **缓存...
.Net之NVelocity的三种用法 using NVelocity; using NVelocity.App; using NVelocity.Runtime; VelocityEngine vltEngine = new VelocityEngine(); vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file...
这个压缩包“NVelocity1.1版及示例Demo(全源码)”包含了NVelocity 1.1版本的所有源代码以及相关的示例和Demo,对于学习和理解NVelocity的工作原理以及如何在实际项目中应用是非常有价值的。 NVelocity的核心功能...
接下来,学习NVelocity的基本语法是必要的。NVelocity模板语言(VTL)包含变量引用(`$variable`)、条件语句(`#if`, `#elseif`, `#else`)、循环结构(`#foreach`)以及包含其他模板的指令(`#include`)。这些...
NVelocity是.NET平台上的一款强大的模板引擎,...进一步学习和实践,将有助于你在实际开发中更有效地利用这个强大的模板引擎。请查阅提供的“NVelocity使用文档”以获取更详尽的指南和示例,提升你的.NET应用开发能力。
NVelocity.dll 文件是开源项目[NVelocity](https://github.com/NVelocity/NVelocity)的一部分,它是一个基于.NET Framework的模板引擎,用于生成动态内容。NVelocity灵感来源于Apache Velocity,它允许开发者将逻辑...
NVelocity是一款基于.NET平台的模板引擎,它源自Java世界的Velocity,并且被广泛应用于.NET应用程序中的动态内容生成。这款开源库允许开发者将业务逻辑与视图层分离,通过模板语言来控制输出格式,使得代码更加清晰...
C# NVelocity模板调用实例是使用开源的NVelocity模板引擎在C#环境中进行动态内容生成的一个典型应用。NVelocity是Apache软件基金会的项目,它提供了强大的模板语言,允许开发者将逻辑与展示分离,使代码更易于维护和...
NVelocity是一款基于Java的开源模板引擎,它是Velocity项目...它的主要特点包括易于学习的语法、良好的可扩展性和与各种Java应用框架的兼容性。通过熟练掌握NVelocity,开发者可以更高效地构建和维护Web应用的视图层。
通过这个案例,你可以学习到如何将Nvelocity集成到你的C#项目中,以及如何实现真静态页面的生成。此外,Nvelocity还支持条件判断、循环、自定义方法等复杂逻辑,使得模板设计更加灵活。 总的来说,Nvelocity是.NET...