NVelocity
迭代内置对象: velocityCount
集合数 : count
NVelocity遇到不能处理的引用时,一般会直接输出标签名称。
在$符号后加个!号,出现Null时,标签的内容就会显示空白。
如:$title 改写成:$!{title}
/// <summary>
/// 黎巧
/// 2012-04-25
/// NVelocity模板工具类 VelocityHelper
/// </summary>
public class NVelocityHelper
{
private VelocityEngine velocity = null;
private IContext context = null;
/// <summary>
/// 默认构造函数
/// </summary>
public NVelocityHelper()
{
Init(AppDomain.CurrentDomain.BaseDirectory);
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="templatePath">资源加载路径</param>
public NVelocityHelper(string templatePath)
{
Init(templatePath);
}
/// <summary>
/// 初始话NVelocity模块
/// </summary>
/// <param name="templatDir">模板文件夹所在目录</param>
public void Init(string templatDir)
{
//创建VelocityEngine实例对象
velocity = new VelocityEngine();
//使用设置初始化VelocityEngine
ExtendedProperties props = new ExtendedProperties();
props.AddProperty(RuntimeConstants.RESOURCE_LOADER, "file");
props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, templatDir);//存放模板文件的目录
props.AddProperty(RuntimeConstants.INPUT_ENCODING, "utf-8");
props.AddProperty(RuntimeConstants.OUTPUT_ENCODING, "utf-8");
velocity.Init(props);
//为模板变量赋值
context = new VelocityContext();
//context.Put("formatter", new VelocityFormatter(context));
}
/// <summary>
/// 给模板变量赋值
/// </summary>
/// <param name="key">模板变量</param>
/// <param name="value">模板变量值</param>
public void PutSet(string key, object value)
{
if (context == null)
{
context = new VelocityContext();
}
context.Put(key, value);
}
/// <summary>
/// 生成html文件
/// </summary>
/// <param name="templateFileName">模板文件</param>
/// <param name="htmlFileName">生成的html文件</param>
public void Save(string templateFileName, string htmlFileName)
{
Template template = velocity.GetTemplate(templateFileName, "UTF-8");
StringWriter sw = new StringWriter();
template.Merge(context, sw);
FileInfo file = new FileInfo(htmlFileName);
DirectoryInfo info = new DirectoryInfo(file.DirectoryName);
if (!info.Exists)
{
info.Create();
}
using (StreamWriter writer = new StreamWriter(htmlFileName))
{
writer.Write(sw);
}
}
/// <summary>
/// 显示模板
/// </summary>
/// <param name="templatFileName">模板文件名</param>
public void Display(string templatFileName)
{
//从文件中读取模板
//Template template = velocity.GetTemplate(templatFileName);
Template template = velocity.GetTemplate(templatFileName, "UTF-8");
//合并模板
StringWriter writer = new StringWriter();
template.Merge(context, writer);
//输出
//HttpContext.Current.Response.Clear();
//HttpContext.Current.Response.Write(writer.ToString());
//HttpContext.Current.Response.Flush();
//HttpContext.Current.Response.End();
}
#region 使用方法:
/*
VelocityHelper vh = new VelocityHelper();
vh.Init(@"templates");//指定模板文件的相对路径
vh.PutSet("title", "员工信息");
vh.PutSet("comName","成都xxxx里公司");
vh.PutSet("property”,"天营");
ArrayList aems = new ArrayList();
//使用tp1.htm模板显示
vh.Display("tp1.htm");
*/
#endregion
}
NVelocity的更多相关文章
- 模板引擎Nvelocity实例
前言 最近一直忙于工作,没时间来管理博客,同时电脑也不给力,坏了一阵又一阵,最后还是去给修理了,这不刚一回来迫不及待的就写一篇文章来满足两个月未写博客的紧迫感. Nvelocity 关于nveloci ...
- NVelocity解析字符串
之前都是先从模板文件里面读取html字符串,现在要求将模板存入数据库或缓存了,怎么办呢?在网上找了下资料,终于找到解决办法. 如下: public class NVelocityHelper { // ...
- NVelocity介绍,NVelocity中文手册文档及实例下载
NVelocity是什么velocity英音:[vi'lɔsiti]美音:[və'lɑsətɪ]近在做一个项目,客户要求有网站模板功能,能够自主编辑网站的风格,因为这个系统是为政府部门做子站系统,举个 ...
- NVelocity用法(转)
每个人应该知道的NVelocity用法 NVelocity是一个基于.NET的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来 ...
- Nvelocity用法
NVelocity用法 NVelocity是一个基于.NET的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由.NET代码定 ...
- 【转】NVelocity模板引擎初学总结
转自:http://sunxitao88.blog.163.com/blog/static/68314439200861963326251/ 前不久,接触到.NET下的MVC-MonoRail,它推荐 ...
- 使用NVelocity生成内容的几种方式
使用NVelocity也有几个年头了,主要是在我的代码生成工具Database2Sharp上使用来生成相关代码的,不过NVelocity是一个非常不错的模板引擎,可以用来生成文件.页面等相关处理,非常 ...
- 抛弃NVelocity,来玩玩Razor
对于内容型,不易变动的东西我们都希望给它来个静态化,还有种情况就是比如新浪云不支持.net,为了能跑起我们的网站, 只能放些静态页面上面,外加jsonp来实现交互,我们知道.net中有很多模板引擎,但 ...
- Asp.net NVelocity 模版引擎
NVelocity.dll是Java中常用的一个模版,下面是常用的模版引擎 1,返回string类型的html代码 /// <summary> /// 获取html模版 /// </ ...
随机推荐
- JavaScript简单对象的定义方法
工厂模式: 初级开发者可能会这样定义对象: var obj = new Object(); obj.name = "hero"; obj.showName=function (){ ...
- Jenkins + svn + maven 构建持续集成环境搭建
Jenkins简介 Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: ...
- Redis五种数据结构简介
Redis五种结构 1.String 可以是字符串,整数或者浮点数,对整个字符串或者字符串中的一部分执行操作,对整个整数或者浮点执行自增(increment)或者自减(decrement)操作. 字符 ...
- bzoj 4326: NOIP2015 运输计划
4326: NOIP2015 运输计划 Time Limit: 30 Sec Memory Limit: 128 MB Description 公元 2044 年,人类进入了宇宙纪元.L 国有 n 个 ...
- 为什么不用rxjava?
rxjava等系列产品.思想是很好的,但是被大多数人用成了一坨屎! 就拿rx最经典的那个例子来说: 假设有这样一个需求:界面上有一个自定义的视图 imageCollectorView ,它的作用是显示 ...
- [Unreal]学习笔记之灯光说明
利用灯光通道,实现局部照亮效果 没有更改Channel之前的效果: 需要将网格物体设置为可移动 将灯光和被照亮物体的Channel设置为同样并且非0零: 设置成功后,就可以实现局部照亮
- 详解SQL盲注测试高级技巧
原文地址: http://www.freebuf.com/articles/web/30841.html
- Bubble Cup 8 finals A. Fibonotci (575A)
题意: 定义类循环序列为 长度无限,且除了有限个元素外,均满足s[i] ≡ s[i mod N] (i≥N). 现在有数列F,定义为 F[i] = s[i-2]*F[i-1] + s[i-1]*F[i ...
- Ubuntu下通过SSH远程登录服务器的方法
1. 首先在服务器上安装ssh的服务器端.$ sudo aptitude install openssh-server 2. 启动ssh-server.$ /etc/init.d/ssh restar ...
- CMakeLists.txt
vtkRendering.libvtkCommon.lib ${VTK_LIBRARIES} vtkRendering vtkCommon