使用NVelocity[翻译]

简介:
原文参见: http://www.castleproject.org/others/nvelocity/usingit.html  
有的地方并不是全文对照翻译,只是意译

这是一个非常基本的NVelocity的使用说明。NVelocity可以把模板和数据动态合并 ( 不光是MonoRail的web页面可以使用,其他诸如发送邮件等也可以使用 )

为了演示简单,下面的例子我们使用一个邮件的模板
第一步:生成VelocityEngine
开始必须有一个engine的实例。初始化实例的时候可以包含一些属性来指定NVelocity的编码、cache等
using  Commons.Collections;
using  NVelocity;
using  NVelocity.App;
using  NVelocity.Context;



VelocityEngine velocity 
=   new  VelocityEngine();

ExtendedProperties props 
=   new  ExtendedProperties();
velocity.Init(props);

第二步:生成模板
假设我们生成一个邮件模板,如下所示:
From: $from
To: $to
Subject: $subject

Hello $customer.Name

We're please to yada yada yada.
用文件的绝对路径( 相对路径也是可以的 )使用下面一行c#代码:
Template template  =  velocity.GetTemplate( @" path/to/myfirsttemplate.vm " );

第三步:合并模板
主要是将数据和模板合并生成最后的内容。可以在模板中使用context
VelocityContext context  =   new  VelocityContext();
context.Put(
" from " " somewhere " );
context.Put(
" to " " someone " );
context.Put(
" subject " " Welcome to NVelocity " );
context.Put(
" customer " new  Customer( " John Doe " ) );

最后使用writer,比如StringWriter输出内容,代码如下所示:
StringWriter writer  =   new  StringWriter();
template.Merge(context, writer);
Console.WriteLine(writer.GetStringBuilder().ToString());

使用以上代码之后就可以在控制台中看到合并后的结果


   本文转自永春博客园博客,原文链接:http://www.cnblogs.com/firstyi/archive/2007/11/01/945886.html,如需转载请自行联系原作者



相关文章
|
数据采集 运维 Java
有了 Dataphin v4.0,跨系统调度依赖再也不是难题
Dataphin v4.0引入了新的触发式节点,用于解决多数据平台间的调度问题。当上游系统(如Unix的crontab)完成数据采集后,可通过触发式节点通知Dataphin开始拉取数据,避免传统轮询方式的效率低和资源占用。触发式节点需满足Dataphin OpenAPI开通和网络连通条件,并通过SDK进行外部触发。示例展示了如何创建和使用触发式节点,以及使用Java SDK模拟触发请求。
721 0
|
人工智能 自然语言处理 机器人
探索人工智能:使用Python构建一个简单的聊天机器人
探索人工智能:使用Python构建一个简单的聊天机器人
527 0
|
存储 人工智能 资源调度
|
缓存 安全 Java
ByteArray转byte[]的两种方式以及HeapByteBuffer&DirectByteBuffer
将ByteArray转byte[],大部分人第一时间会使用get函数
845 0
|
人工智能 API
【保姆级教程]】5分钟用阿里云百炼满血版DeepSeek, 手把手做一个智能体
阿里云推出手把手学AI直播活动,带你体验DeepSeek玩法。通过阿里云百炼控制台,用户可免费开通满血版R1模型,享受100w token免费额度。活动还包括实验步骤、应用开发教程及作业打卡赢好礼环节,提交优秀作品更有机会获得定制礼品。快来参与吧!
3129 0
|
11月前
|
机器学习/深度学习 存储 人工智能
《深度剖析:Q-learning与策略梯度方法的本质区别》
在强化学习领域,Q-learning和策略梯度方法是两种重要的算法。Q-learning通过迭代更新状态-动作值(Q值),评估动作价值,适用于离散动作空间;策略梯度方法则直接优化参数化策略,适合连续动作空间。前者收敛稳定但速度较慢,后者收敛快但稳定性差。两者各有优劣,适用于不同场景。
399 27
|
Java 数据库连接 数据库
Spring基础3——AOP,事务管理
AOP简介、入门案例、工作流程、切入点表达式、环绕通知、通知获取参数或返回值或异常、事务管理
Spring基础3——AOP,事务管理
|
IDE API Android开发
安卓与iOS开发环境的差异及适配策略
在移动应用开发的广阔舞台上,Android和iOS两大操作系统各据一方,各自拥有独特的开发环境和工具集。本文旨在深入探讨这两个平台在开发环境上的关键差异,并提供有效的适配策略,帮助开发者优化跨平台开发流程。通过比较Android的Java/Kotlin和iOS的Swift/Objective-C语言特性、IDE的选择、以及API和系统服务的访问方式,本文揭示了两个操作系统在开发实践中的主要分歧点,并提出了一套实用的适配方法,以期为移动开发者提供指导和启示。
365 11
|
存储 网络协议 网络安全
MQTTClient_create函数
MQTTClient_create函数
724 0
|
人工智能 C#
虚拟桌宠模拟器:VPet-Simulator,一个开源的桌宠软件, 可以内置到任何WPF应用程序
虚拟桌宠模拟器:VPet-Simulator,一个开源的桌宠软件, 可以内置到任何WPF应用程序
虚拟桌宠模拟器:VPet-Simulator,一个开源的桌宠软件, 可以内置到任何WPF应用程序