由于NVelocity项目太久没有升级了,虽然看到Velocity经常发布一些新的功能,但.net版本的修改似乎比较迟。以至于很少关注升级情况。由于前期使用这个模板引擎的时候发现对DataTable支持不太好,原先想自己修改一下源代码,但分析了一下源代码发现改不动,也没有精力去研究。(最近越来越懒了^_^)

开源代码及最新下载:http://sourceforge.net/projects/castleproject/files/

今天看到Richie写的关于1.1的两篇文章发现新版本已经解决了我想要的支持。真是太高兴了,随即结合《Castle NVelocity - 1.1整理了一下相关的代码供大家参考。

原先使用0.4X版本的时候其实也可以使用DataTable,但就是有些麻烦,我也是经过反复的测试后终于想到一个办法来处理,作法如下:需要循环行记录的情况下再循环列,然后根据列号把值写到变量里,相当的麻烦。

#foreach($Item in $dtSubSortList.Rows)

#set ($rownum = 0)

#foreach($value in $Item.ItemArray)

#set ($rownum = $rownum+1)

#if($rownum == 1)

#set($CATEGORY_ID = "$value")

#end

#if($rownum == 2)

#set($CATEGORY_NAME = "$value")

#end

#end

<tr> <td class="daoh_1"><div class="wenz_2"><a href="$!{WebRoot}cms/listPage.aspx?categoryId=$!{CATEGORY_ID}&parent=$!{categoryid}">$CATEGORY_NAME</a></div></td></tr>

#end

新版本的写法就非常的简单了:

#foreach($Item in $dtSubSortList.Rows)

<tr> <td class="daoh_1"><div class="wenz_2"><a href="$!{WebRoot}cms/listPage.aspx?categoryId=$Item.CATEGORY_ID">$Item.CATEGORY_NAME</a></div></td></tr>

#end

但现在不足的之处就是还不支持索引的写法,如$Item[0] 或者 $Item["字段名"]

我整理的部分代码里封装了NVelocityHelper,并写一下模板页的基类PageBaseTemplate等内容,仅供大家参考。

在PageBase.cs中

这个属性可以通过一些扩展实现多级子站的模板定制功能(大家可以自己思考一下,我只是使用了目录的方式进行处理,应该还有其它更好的方法)。

1.1版本的使用说明在《Castle NVelocity - 1.1 》有详细的说明,非常感谢。

原代码及最新的组件都在这里: /Files/liubiqu/NVelocity1.1Demo.rar

代码内容:

由于时间关系还没有详细的研究,下列问题有待进一步测试:

1、velocity.GetTemplate是否有提供一些缓存与优化的处理

2、velocity.Evaluate的时候log的参数有什么用处及整合到其它日志方法

3、在性能方面有没有更好的处理方式。

升级到NVelocity1.1版本相关推荐

  1. 慧算账全面升级,V2.2版本带来极致体验

    本文讲的是慧算账全面升级,V2.2版本带来极致体验,日前,互联网财税服务领导者--慧算账正式宣布推出全新升级的重磅新版本.相较于前一版本,V2.2版整体性能进行了全面提升,内部优化幅度也十分惊人,高效 ...

  2. 解决启动不了VMware虚拟机以及VM升级到新的版本后出现黑屏的问题

    解决启动不了VMware虚拟机以及VM升级到新的版本后出现黑屏的问题 参考文章: (1)解决启动不了VMware虚拟机以及VM升级到新的版本后出现黑屏的问题 (2)https://www.cnblog ...

  3. linux docker升级,CentOS上面升级Docker到最新版本

    一般我们用yum安装的docker版本是1.6或者1.7,我们要把docker升级到最新的版本. 首选我们验证一下系统里的docker版本[root@xiaohuai ~]# docker -v Do ...

  4. linux centos升级php_CentOS使用yum升级php到最新版本

    CentOS的php版本默认为5.1.6,然后在5.2.9版本之前的的php都存在一个漏洞,但是目前网上很多地方都无法使用yum update php*升级到最新版本,比较常见的是升级到5.2.6版本 ...

  5. linux系统内核从3.2.0-100-generic升级到3.13版本

    Docker 官网上要求Docker需要在64位版本的Ubuntu上安装,并且还要保证 Ubuntu 内核的最小版本不低于 3.10. 查看系统相关信息 可使用命令uname -a .uname -r ...

  6. linux升级ssh到6.6版本,CentOS6.5 openssh升级到openssh-7.6版本

    CentOS6.5 openssh升级到openssh-7.6版本 2018-8-3 foooy 升级前保证故障后能现场处理,或者远程卡处理,否则不要这样直接升级 yum install -y gcc ...

  7. pip show pip可以查看pip的版本以及升级pip到最新版本

    输入命令:pip show pip可以查看pip的版本,如果不是最新版最后会有提示如下: 输入命令:python -m pip install --upgrade pip可以升级pip到最新版本.

  8. php5.3升级5.4,centos php 5.3升级到 php5.4版本

    centos php 5.3升级到 php5.4版本 发布时间:2020-06-20 06:07:39 来源:51CTO 阅读:1021 作者:kuingfuture php5.3听说有bug,因此单 ...

  9. autopoi升级到4.0版本修改方法

    以下为autopoi升级到4.0版本修改方法: 1.样式相关 图案颜色和样式设置: 其他颜色修改类似 HSSFColor.WHITE.index => IndexedColors.WHITE.i ...

最新文章

  1. 【EventBus】事件通信框架 ( 订阅方法注册 | 注册 事件类型 - 订阅类 + 订阅方法 到指定集合 | 取消注册 数据准备 )
  2. “国货之光” 完美日记的微服务实践和优化思路
  3. Android屏幕适配全攻略(最权威的官方适配指导) (转)
  4. 在Jetty中设置SSL
  5. 分布式和集群区别以及分布式事务
  6. Spring JPA
  7. LeetCode 239. 滑动窗口最大值(双端队列+单调栈)
  8. Screen Saver(屏幕保护设置) in Cocoa
  9. 3、构建并安装PHP扩展
  10. 二十五.SLAM中Mapping和Localization区别和思考
  11. keytool 错误: java.io.IOException: Keystore was tampered with, or password was incorrect → 解决办法
  12. Java基础语法总结(全)
  13. java swing餐厅订餐系统
  14. MATLAB图像去雾算法
  15. 世界质量大师登场,告诉你质量的最大秘密!【优思学院】
  16. 【2021/7/19 更新】【梳理】简明操作系统原理 附录一 虚拟内存子系统案例选讲(VAX/VMS + Linux)(docx)
  17. linux版wps系统缺失字体,ubuntu wps 字体缺失的解决方法
  18. 《现代密码学》学习笔记——第七章 密钥管理[一]
  19. strcpy函数在c语言的作用是什么,strcpy函数的作用是什么呀?
  20. 递归陷入死循环的判断方法与解决措施(java代码)

热门文章

  1. Android 创建一个新的Activity
  2. Android网络框架技术
  3. 币圈名利场,一场赤裸裸的狼人杀
  4. UiPath如何实现暂停功能?
  5. python 多进程multiprocessing 模块
  6. HBase流量限制和表负载均衡剖析
  7. Kafka Streams简介: 让流处理变得更简单
  8. 05:整数序列的元素最大跨度值
  9. MODULE_DEVICE_TABLE【转】
  10. (转)深入理解最强桌面地图控件GMAP.NET ---离线地图