`
isiqi
  • 浏览: 16486268 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

nvelocity学习笔记

阅读更多

老大终于给我们布置了实战性的任务。嘿嘿。想到自己做的东西可能要被千千万万的人看到,心里有点小兴奋。

不过,老大的任务里有个东西我以前没有接触过。所以今天一天都在学习这个——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例子

    刘冬编写的Spring.NET学习笔记26——整合NVelocity例子。 原文:http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_NVelocity.html

    NVelocity中文文档以及NVelocity.dll 1.0(适用用.net环境下)

    NVelocity是Java模板引擎...要使用NVelocity模板技术需要学习VTL语言。网络上关于NVelocity的VTL语言介绍的比较少,不过没有关系,由于NVelocity是有Velocity移植过来的所以Velocity的VTL语言完全适用于NVelocity。

    NVelocity操作基础代码

    NVelocity是.NET平台上的一个模板引擎,它源自Java的Velocity模板语言,并且被广泛用于生成动态HTML、XML、电子...当然,这只是NVelocity的一部分功能,更深入的学习和实践将帮助你更好地理解和利用这个强大的工具。

    nvelocity_模板_NVelocity_C#_模板引擎_

    **NVelocity模板引擎详解** NVelocity是开源的Java模板引擎,但在.NET环境中也有广泛应用,它是一种强大的、可扩展的模板语言,主要用于生成动态内容。NVelocity允许开发者将HTML或者其他格式的文档与业务逻辑分离...

    NVelocity语法 java or c#

    NVelocity是一款强大的、开源的模板引擎,最初是为Java平台设计的,但通过特定的封装,它也能够被C#开发者...通过学习NVelocity文档,如`NVelocity语法.doc`,你可以更深入地了解其高级特性,并将其应用到实际项目中。

    nvelocity 模型适配

    1. **模板语言**:NVelocity使用自己的模板语言(VTL, Velocity Template Language),这是一种非脚本语言,设计简洁,易于学习和使用。VTL使得开发者能够通过简单的指令(如`#set`, `#if`, `#foreach`等)来控制...

    NVelocity语法

    NVelocity语法 NVelocity是一种基于模板的template engine,用于生成动态网页内容。下面是NVelocity语法的详细知识点: 变量和表达式 在NVelocity中,变量是通过 `$`符号来声明的,例如 `$customer.Name`。变量...

    使用NVelocity实现的简单学员管理

    在.NET环境中,NVelocity为开发者提供了便利的方式来生成静态或动态的输出,例如邮件模板、报告或者像在本例中的学员管理系统中的界面展示。 本项目“使用NVelocity实现的简单学员管理”显然利用了NVelocity的强大...

    2017年NVelocity引擎各种用法

    学习NVelocity,可以从以下几个方面入手: - 理解基础语法:深入学习变量、方法调用、注释、条件和循环等基本元素。 - 学习上下文管理:如何在Java代码中创建和管理上下文对象,将数据传入模板。 - 掌握模板指令:...

    Velocity文档和NVelocity类库

    ** Velocity文档和NVelocity类库** Velocity是一款强大的模板引擎,源于Apache软件基金会,它被广泛应用于Java应用程序中,用于生成动态...通过深入学习和实践,我们可以充分利用这些工具,提升软件开发的效率和质量。

    Nvelocity模板引擎

    1. **易用性**:模板语言简单直观,易于学习,非程序员也能快速上手。 2. **可扩展性**:支持自定义宏和指令,方便创建复用的模板元素。 3. **安全**:通过严格的上下文访问控制,防止模板执行恶意代码。 4. **缓存...

    Asp.Net之NVelocity的三种用法

    .Net之NVelocity的三种用法 using NVelocity; using NVelocity.App; using NVelocity.Runtime; VelocityEngine vltEngine = new VelocityEngine(); vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file...

    NVelocity1.1版及示例Demo(全源码)

    这个压缩包“NVelocity1.1版及示例Demo(全源码)”包含了NVelocity 1.1版本的所有源代码以及相关的示例和Demo,对于学习和理解NVelocity的工作原理以及如何在实际项目中应用是非常有价值的。 NVelocity的核心功能...

    .NET + NVelocity简单例子

    接下来,学习NVelocity的基本语法是必要的。NVelocity模板语言(VTL)包含变量引用(`$variable`)、条件语句(`#if`, `#elseif`, `#else`)、循环结构(`#foreach`)以及包含其他模板的指令(`#include`)。这些...

    NVelocity使用文档

    NVelocity是.NET平台上的一款强大的模板引擎,...进一步学习和实践,将有助于你在实际开发中更有效地利用这个强大的模板引擎。请查阅提供的“NVelocity使用文档”以获取更详尽的指南和示例,提升你的.NET应用开发能力。

    NVelocity.dll

    NVelocity.dll 文件是开源项目[NVelocity](https://github.com/NVelocity/NVelocity)的一部分,它是一个基于.NET Framework的模板引擎,用于生成动态内容。NVelocity灵感来源于Apache Velocity,它允许开发者将逻辑...

    NVelocity简单实例+资源包

    NVelocity是一款基于.NET平台的模板引擎,它源自Java世界的Velocity,并且被广泛应用于.NET应用程序中的动态内容生成。这款开源库允许开发者将业务逻辑与视图层分离,通过模板语言来控制输出格式,使得代码更加清晰...

    C# NVelocity模板调用实例

    C# NVelocity模板调用实例是使用开源的NVelocity模板引擎在C#环境中进行动态内容生成的一个典型应用。NVelocity是Apache软件基金会的项目,它提供了强大的模板语言,允许开发者将逻辑与展示分离,使代码更易于维护和...

    模板引擎 - NVelocity

    NVelocity是一款基于Java的开源模板引擎,它是Velocity项目...它的主要特点包括易于学习的语法、良好的可扩展性和与各种Java应用框架的兼容性。通过熟练掌握NVelocity,开发者可以更高效地构建和维护Web应用的视图层。

    Nvelocity真静态案例

    通过这个案例,你可以学习到如何将Nvelocity集成到你的C#项目中,以及如何实现真静态页面的生成。此外,Nvelocity还支持条件判断、循环、自定义方法等复杂逻辑,使得模板设计更加灵活。 总的来说,Nvelocity是.NET...

Global site tag (gtag.js) - Google Analytics