Velocity的中文指南(5)-整理

PHP中文文档Dash版精改优化实战手册 简介:PHP是一种广泛应用于Web开发的开源脚本语言,可嵌入HTML,具备强大的服务器端处理能力。本“PHP中文文档Dash版,精改版”为开发者精心整理并优化的离线中文手册,专为Dash、Zeal(Windows)和Velocity(Linux)等文档浏览器设计,包含完整的PHP官方文档内容,如函数、类、常量、语法结构及扩展库等。通过导入“PHP.docset”文件,开发者可在无网络环境下高效查阅API文档,提升学习与开发效率。适用于多平台的技术人员,是PHP学习与项目实战中不可或缺的参考资料。 阅读详情

1.       VTL: 格式化

虽然在本指南中的VTL经常显示在新行中或者有空格,但是下面的VTL

#set( $imperial = ["Munetaka","Koreyasu","Hisakira","Morikune"] )

#foreach( $shogun in $imperial )

    $shogun

#end

 

和下面的写法同样有效。

Send me #set($foo = ["$10 and ","a cake"])#foreach($a in $foo)$a #end please.

 

Velocity的行为并不受空格的影响,前述的指令也可以写成:

Send me

#set( $foo = ["$10 and ","a cake"] )

#foreach( $a in $foo )

$a

#end

please.

 

或者

Send me

#set($foo       = ["$10 and ","a cake"])

                 #foreach           ($a in $foo )$a

         #end please.

 

上面每种写法结果都一样。

2.       其它特征和杂项

2.1.     数学特征

Velocity 有一些内建的数学功能,可以使用set指令用在模版中。下面的共识分别演示了加减乘除运算:

#set( $foo = $bar + 3 )

#set( $foo = $bar - 4 )

#set( $foo = $bar * 6 )

#set( $foo = $bar / 2 )

 

当进行除法运算时,结果将会是整数。When a division operation is performed, the result will be an integer. 余数则可以通过模(%)运算获得。

#set( $foo = $bar % 5 )

 

在Velocity 中,只有整数可以进行数学运算;如果执行非整数的数学运算,将被记录下来,并返回null 。

2.2.     范围操作符

范围操作符可以和#set 和#foreach 语句一起使用。有助于产生一个整数的目标数组,范围操作符有以下的结构:

[n..m]


 

n 和 m 都必须是整数或者可以产生整数。不管 m 大于或者小于n 都没关系;在m小于n这种情况下,范围可以向下计数。下面是使用范围操作符的例子:

第一个例子

#foreach( $foo in [1..5] )

$foo

#end

 

第二个例子

#foreach( $bar in [2..-2] )

$bar

#end

 

第三个例子

#set( $arr = [0..1] )

#foreach( $i in $arr )

$i

#end

 

第四个例子

[1..3]

 

 

他们分别产生一下输出

1 2 3 4 5

 

2 1 0 -1 -2

 

0 1

 

 [1..3]

 

范围操作符和#set 和#foreach 指令一起使用时,只是产生数组。

页面设计人员在设计具有相同尺寸的表格时,有时没有足够的数据来填充,他们会发现范围操作符非常有用。

2.3.     进阶:转义和!

当一个引用被! 字符处于静寂模式,并且! 字符在转义符/ 前出现,应用将用一种特别的方式处理。请注意他和常规转义的不同,下面这种情况/ 先于! 出现:

#set( $foo = "bar" )

$/!foo

$/!{foo}

$//!foo

$///!foo

 

这样将被加工成

$!foo

$!{foo}

$/!foo

$//!foo

 

 

对比常规转义,/先于 $:

/$foo

/$!foo

/$!{foo}

//$!{foo}

 

 

这是结果是:

/$foo

/$!foo

/$!{foo}

/bar

 

 

 

 

 

 

 

 

 

 

 

 

3.       Velocimacro 杂记

本节是关于Velocimacros的一个小型FAQ。 本届内容会不时更新,所以请常来检查新的内容,

注 : 本节中, 'Velocimacro' 将简写为'VM'。

 

Q:是否可以使用指令directive 或者 VM 作为另一个VM的参数? 例如: #center( #bold("hello") )

A:  不行。指令不能用作指令的参数,而大多数情况下,作为实际的应用,VM就是指令。

不过也有一些办法。一个简单的做法是使用双引号来加工你的内容。所以,你可以这样:

#set($stuff = "#bold('hello')" )

#center( $stuff )

 

甚至可以节省一个步骤:

#center( "#bold( 'hello' )" )

 

请注意,后面这个例子中,参数是在VM内部被求值,不是在调用的那一层次上。换句话说,被传入的VM的参数是整个被传入的,并且在传入的VM内部被求值。所以我们可以这样做:

#macro( inner $foo )

  inner : $foo

#end

 

#macro( outer $foo )

   #set($bar = "outerlala")

   outer : $foo

#end

 

#set($bar = 'calltimelala')

#outer( "#inner($bar)" )

 

 

这里,输入将会是:

Outer : inner : outerlala

 

因为"#inner($bar)" 的求值发生在#outer()内部,所以在#outer() 内设置的$bar得值会是其使用的值。

这是一个有意的保护特征—参数按名称传递给VM,所以可以将象状态引用的东西传给VM ,比如:

#macro( foo $color )

  <tr bgcolor=$color><td>Hi</td></tr>

  <tr bgcolor=$color><td>There</td></tr>

#end

 

#foo( $bar.rowColor() )

 

rowColor() 被重复调用而不是一次。为避免如此,可以调用VM外部的方法,然后将值传递给VM.

#set($color = $bar.rowColor())

#foo( $color )

 

Q:是否可以通过#parse()注册VM ?

A:当前, Velocimacros 在其首次在模版中使用前必须首先定义它。这意味着, #macro() 宣称应该在使用Velocimacros之前。

如果你想#parse() 一个包含#macro() 指令的模板,记住这个非常重要。因为#parse() 在运行时发生,解析器在解析时要决定是否模版中一个看起来像VM的元素真是VM,所以解析一系列VM 宣称可能并不能如愿地工作的很好。为避免如此,可以简单地使用velocimacro.library 的办法,使Velocity 在启动时载入VM。

 

Q. 什么是VM自动载入(Velocimacro Autoreloading)?

A. 这是一个属性,在开发时使用,而不时运行时:

 velocimacro.library.autoreload

默认值为false。当设置为true时,连同<type>.resource.loader.cache 属性设置为false(这里<type> 是使用的资源载入器的名称,比如'file') ,Velocity 引擎在你创建VM库文件是将自动载入其改变,这样你就不必将其导入servlet 引擎(或者应用程序)中,或者用其他手段来使其自动重新载入。

 

下面是一个简单的设置配置组合:

file.resource.loader.path = templates

    file.resource.loader.cache = false

    velocimacro.library.autoreload = true

 

注意在生产状态(运行时)不要使其打开。

 

4.       字符串联

开发者常问的一个问题是“我如何进行字符串串联?”是否有类似于JAVA中的'+'操作符?

为了串联VTL中的引用,你不得不将它们“放在一起”。而你想要放置在一起的上下文很重要,下面举例说明。

在常规“笨办法”模板中:

       #set( $size = "Big" )

       #set( $name = "Ben" )

 

      The clock is $size$name.

 

 输出将会是:'The clock is BigBen’。我们来看更有趣的事情,比如,当你想串联一个字符串并传递给一个方法,或者设置一个新的引用,可以这样:

      #set( $size = "Big" )

      #set( $name = "Ben" )

 

      #set($clock = "$size$name" )

 

      The clock is $clock.

 

 

结果是一样的。作为最后一个例子,当你想混合“静态”字符串到引用中,你可能需要使用“形式引用”:

#set( $size = "Big" )

#set( $name = "Ben" )

#set($clock = "${size}Tall$name" )

 

现在,输出将会是'The clock is BigTallBen'。

GEM5教程--gem5开始之旅(一) GEM5系列教程--gem5开始之旅一、建立GEM5 GEM5模拟器是一个用于计算机系统结构研究的模块化平台,包含系统级别的结构以及处理器的微体系结构。读者若想详细的了解,请查看其官方文档GEM5文档 读者如果想要入门GEM5的话,可以参考Learning_GEM5这个网站,这里面有较为详细的教程,可以带读者从入门到精通。小编我对GEM5的入门学习也是从这个Learning_GEM5这个网站学习的... 阅读详情

相关推荐

STM32F103模拟SSI时序解析:实现高精度绝对式编码器位置读取

本文详细解析了如何在STM32F103微控制器上通过软件模拟SSI协议时序,实现高精度绝对式编码器的位置读取。文章从项目驱动出发,深入剖析了SSI通信原理、硬件电平转换连接、核心软件模拟代码实现及关键时序参数调试方法,并提供了使用示波器进行波形对齐与优化的实战指南,为成本敏感型工业控制与机器人项目提供了高性价比的解决方案。

weixin_29196315的博客 141

Velocity,数值和日期的格式化

Velocity的数值类型,显示的时候,会自动调用toString转换成字符串类型。

山不在高,有金则名 2万+

微信小程序-如何根据缩放屏幕大小自适应icon图标更改marker

微信小程序如何根据用户的缩放屏幕来改变marker图标icon的大小,实现icon自适应屏幕缩放的效果

Bartender_VA11的博客 3980

Velocity vm模板代码格式问题

vm模板是什么都输出,就是空格也输出,所以要注意这一点,所以参数要顶头写,例如 #if($column.lowerAttrName==$pk.lowerAttrName) <id property="${pk.lowerAttrName}" column="${pk.columnName}"/> #else mapper.xml模板样例格式 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "

panpeichang的博客 1128

Intel MKL库常用模块的C语言实现

文章目录1. 随机数生成1.1 等概率的01分布 viRngUniform1.2 (复)高斯分布 vsRngGaussian2. 向量-向量运算2.1 向量数乘与加法 cblas_caxpby2.2 向量内积 cblas_cdotu_sub2.3 向量范数 cblas_scnrm23. 矩阵-向量运算3.1 矩阵存储方案3.2 矩阵-向量乘法 cblas_cgemv4. 矩阵-矩阵运算4.1 矩阵...

月半 月半的博客 4650

基于Transformer的CFD代理模型:AeroTransformer原理、实现与优化

计算流体动力学(CFD)仿真是航空航天、汽车工程等领域的关键技术,但其高计算成本限制了设计优化效率。代理模型通过机器学习方法学习输入参数与流场输出间的映射关系,能实现秒级预测,大幅加速仿真流程。Transformer架构凭借其全局注意力机制,能有效建模流场中的长程物理关联,克服了传统卷积神经网络在捕捉全局依赖上的局限。通过预训练与微调策略,模型能先在大规模多样化数据集上学习通用流体规律,再针对特定任务快速适配,显著提升了小样本下的泛化能力与工程实用价值。AeroTransformer项目正是这一技术路线的典

weixin_33509203的博客 358

Velocity——#foreach指令 $velocityCount

Velocity(7)——#foreach指令 首先是#foreach的简单示例: #foreach( $elem in$allElems)     $elem #end 上面这个例子中,$allElems可以是一个Vector,一个HashTable,一个数组。 在Velocity中,有一个变量$velocityCount用作循环计数,初始值是1。这个变量的名字和初始值是在veloc

lululove19870526的专栏 5万+

C++多线程 task--std::promise和std::future

本文主要讲解C++11/14/17中所提供的应用于多线程编程中的Task机制。Task可由如下几部分取得而本文主要讲解std::promise和std::future相关的内容。std::promise和std::future通过一个数据管道进行交流,可以将std::promise看作生产者,std::future看作消费者,其两者形成如下的方式交互std::promise本身是一个模版类,通过std::promise可以像数据管道中设置value,异常和相应的通知信息。std::promise提供了如下接

qls315的博客 1818

velocity模板页面四则运算

项目有个前端velocity需求,因为比较简单,所以就后端自己完成了,在数据库里面存储的数据是美分,在前台显示要显示为美元,所以要对金额数据进行除10操作(如果是其它除数可能需要考虑到无限小数的问题),但是因为使用Velocity进行四则运算,下面总结下使用Velocity该如何正确的进行四则运算参考JAVA的语法在vm里面直接进行数值的计算,实验结果并不可行,velocity引擎把fundAmount/10当做占位符号,且由于未读取到目标值直接原样输出。 正确解法 对于模板引擎无法理解我们的意图到底是什么

蒲春伟的博客 1628

YOLOv8 智能交通违章检测 - 压线/越线行驶检测详解

本文提出了一种基于YOLOv8的智能交通违章检测方案,重点解决车辆压线/越线行驶的识别问题。系统采用多技术融合方案:YOLOv8检测车辆、ByteTrack跟踪轨迹、传统或深度学习方法识别车道线,并通过几何计算判断车辆是否违规跨越实线。文章详细介绍了技术难点(如车道线分类、透视变形处理)、判定流程、系统架构和核心代码实现,包括车道线检测、违章逻辑判断和可视化模块。同时指出了现有方案的局限性,建议通过引入逆透视变换和专用车道线分割模型来提升准确率。该纯视觉方案具有低成本、易部署的特点,适用于智能交通监控场景。

u010117029的博客 173

Esp32蓝牙Hid调用方案 http执行设备、鼠标、键盘相关操作

本文主要介绍 Esp32 蓝牙 Hid 相关的多种操作方式,详细的设备、鼠标、键盘相关操作的 http 调用方法。下面是整理出的所有 http 调用方法和 rhino 引擎方式。本机调用的话直接使用http://localhost:8080 如果是局域网调用则使用软件里的地址 比如我的是http://192.168.1.5:8080。文件地址: https://www.123865.com/s/Qtm4jv-xyZbd?使用前需要一块烧录好的ESP32板子并在手机安装好embedded软件用于蓝牙通信。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 569

Velocity 页面四则运算

因为项目需求,在数据库里面存储的数据是美分,在前台显示要显示为美元,所以要对金额数据进行除10操作(其它除数可能需要考虑到无限小数的问题),但是因为使用Velocity进行四则运算和远程部署热部署问题导致了不少的坑,下面总结下使用Velocity如何正确的进行四则运算......

蒲春伟 1万+

YOLO26涨点改进| TGRS 2026 | 独家创新首发、注意力改进篇| 引入LCGA局部曲率引导注意力,保持局部稳定性的同时突出关键几何区域,含多种创新改进,促进YOLO26所有任务高效涨点

🔥本文提出LCGA(局部曲率引导注意力)模块,通过引入曲率信息改进YOLO26网络模型。LCGA在局部窗口内利用深度卷积构造曲率代理,调制标准窗口注意力,使模型更关注道路、边界等曲线型结构,提升遥感图像超分辨率中的几何保真度。相比普通注意力,LCGA能精准聚焦关键几何区域,减少边缘断裂和轮廓偏移,同时保持较低计算开销。实验表明LCGA显著提升性能,在UCMerced数据集上PSNR提升0.2148dB。文章提供了三种改进方案。

Ai缝合怪、助力小伙伴高效发论文 224

Velocity的中文指南(1)-整理

1.       关于 Velocity 用户指南旨在帮助页面设计者和内容提供者了解Velocity 和其简单而又强大的脚本语言(Velocity Template Language (VTL))。本指南中有很多示例展示了用Velocity来讲动态内容嵌入到网站之中,但是所有的VTL examples 都同演示用于所有的页面和模版。感谢选择Velocity! 2.      

火鸟专栏 3412

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Velocity的中文指南(4)-整理

1.       宏#macro 脚本元素允许模板设计者在VTL 模板中定义重复的段。 Velocimacros 不管是在复杂还是简单的场合都非常有用。下面这个Velocimacro,仅用来节省击键和减少排版错误,介绍了一些Velocity宏的概念。 #macro( d )#end 在例子中,Velocimacro定义为d,它可以象调用其他VTL指令一样的形

火鸟专栏 2123

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Velocity的中文指南(3)-整理

1.       循环 1.1.     Foreach 循环 #foreach 元素允许进行循环,例如: #foreach( $product in $allProducts )    $product#end这个#foreach 循环将导致$allProducts 列表 (对象) 为查询所有的产品$products (目标)遍历一遍。每次经过循环

火鸟专栏 1988

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Velocity的中文指南(2)-整理

1.       取得语义Getting literalVTL 特别的字符,比如$ 和 #, 来做这个工作,因此在模板中使用这些自负的时候必须格外小心。本节讲述$ 的转义。1.1.     货币我们写下句子 "I bought a 4 lb. sack of potatoes at the farmers market for only $2.50!" ,这并没有什么问题。但如前所述

火鸟专栏 2393

利用velocity模板以及itext生成pdf

利用velocity模板以及itext生成pdf 我整理的源码:http://download.youkuaiyun.com/download/u012174571/8748897 首先是velocity的使用:          1.下载:http://velocity.apache.org/download.cgi          2.导入包:velocity-1.7.jar、commons-l

u012174571的博客 4414

Velocity.js 中文文档(转)原地址:http://www.mrfront.com/docs/velocity.js/index.html

  Velocity.js 中文文档   Version: 1.5.0( 更新于2018-04-17 ) 概述 Velocity 是一个简单易用、高性能、功能丰富的轻量级JS动画库。它能和 jQuery 完美协作,并和$.animate()有相同的 API, 但它不依赖 jQuery,可单独使用。 Velocity 不仅包含了 $.animate() 的全部功能, 还拥有:颜色动画、转换...

古德湖的福禄 5625

静态化-VeloCity

1.在spring.xml中配置 1 <!-- 指定vm模版路径 start --> 2 <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean"> 3 <property name...

weixin_30892889的博客 72

Zeal-docset-CN 项目安装和配置指南

### 项目基础介绍 Zeal-docset-CN 是一个用于 Zeal 和 Velocity 的 docset 文档导入工具。Zeal 是一个开源的离线文档浏览器,类似于 macOS 上的 Dash,适用于 Windows 和 Linux 系统。Velocity 是另一个类似于 Dash 的工具,主要用于 Windows 系统。Zeal-docset-CN 项目的主要目的是提供中文的 docse...

gitblog_07931的博客 811

[106901] Maven 工程中使用 Velocity Tools View 3.0

本文是在某高校为学生授课后整理的笔记,同道中人可以任意传播,唯独期望在 CxDN 上全文照抄时,注明原文出处 1、配置 Maven Apache Maven 下载地址:http://maven.apache.org/download.cgi( 本文撰写时最新版本为 3.5.3 )。 下载好...

chuikuangzan0713的博客 307

XWiki中文问题解决方案

http://llzm.blog.ccidnet.com/blog.php?do=showone&itemid=147635&typ=blog XWiki中文问题解决方案 1. Tomcat服务器的server.xml配置文件中如下位置添加URIEncoding="UTF8": 2. velocity.properties文件中配置如下:...

liaoyixun的专栏 1160
上一篇: Velocity的中文指南(4)-整理
下一篇: Log4j的简单配置使用!
phoenixup
博客等级 码龄23年 2粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值