`
Qieqie
  • 浏览: 340022 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用velocity吧 :$velocityCount和Tool的使用

阅读更多
模板语言大家都熟悉,$var,#method(),#marco,#foreach,#if #elseif #end,#parse,#set都是常用的命令了。只要知晓这几个用法,也就可以算是脸熟了。

结合我自己使用Velocity的应用,我觉得还有一些几个经验很值得和大家分享:

    $velocityCount的应用
    Tool的应用
    layout的应用


1、$velocityCount

这个变量在velocity属性文件中定义,在#foreach的时候可以用得上,比如我foreach一个List<User>时,我们可以使用$velocityCount判断完成形如“张三,李四”的输出(李四后面没有逗号)

#foreach($user in $users)
    #userNode($user)#if($velocityCount != $user.size()),#end 
#end




#foreach($user in $users)
    #if($velocityCount != 1),#end #userNode($user)
#end



默认$velocityCount 从1开始。

2、Tool的应用

Tool在Velocity中便是一个可以在模板中全局使用的对象。常用的有$errors, $date, $text
$errors: 用于读取在request中保存的错误提示信息(如密码错了等等),可这样用:
#foreach ($e in $errors.all )
            <li>$e</li>
    	#end


$date:用于格式化时间类型,e.g:
$date.format('yyyy-MM-dd', $post.lastModified)


$text 用于读取配置在属性文件中在国际化信息, e.g.
$text.get("inbox")

便是读取ApplicationResources_zh_CN.properties文件中"inbox=收件箱"这个设置(plus广告:编辑属性文件时,需要unicode保存文件内容,这对中文很不方便,自从有了propedit插件,他自动完成这个转化,使用起来节省不少工作量,1片顶5片,值! )

Velocit的Tool都是普通的Java类,不用继承或实现基础类或接口,任何一个Java类,只要有默认构造器,都可以配置在velocity toolbox.xml中便可在模板中使用,配置的基本样式如下:

	<!-- 
		http://velocity.apache.org/tools/releases/1.3/generic/:	
		Example of formatting the "current" date:
		$date                         -> Oct 19, 2003 9:54:50 PM
		$date.long                    -> October 19, 2003 9:54:50 PM PDT
		$date.medium_time             -> 9:54:50 PM
		$date.full_date               -> Sunday, October 19, 2003
		$date.get('default','short')  -> Oct 19, 2003 9:54 PM
		$date.get('yyyy-M-d H:m:s')   -> 2003-10-19 21:54:50
		
		Example of formatting an arbitrary date:
		$myDate                        -> Tue Oct 07 03:14:50 PDT 2003
		$date.format('medium',$myDate) -> Oct 7, 2003 3:14:50 AM
		
	-->
	<tool>
		<key>date</key>
		<scope>application</scope>
		<class>org.apache.velocity.tools.generic.DateTool</class>
		<parameter name="format" value="yyyy-MM-dd" />
	</tool>


更多的常用Tool可以在Velocity网站上直接查看他们的使用说明:http://velocity.apache.org/tools/releases/1.3/generic/


当然对于特殊于自己项目中经常用到的一些“工具变量”,也可以把它配置到toolbox中。


-----
本贴不是什么高深帖子,Velocity官方网站上都有,只是发现很多用velocity,但是都没用好这些功能,所以说说
-----
velocity还有一个特别好用的特点,那就是支持页面layout布局。 下个帖子阐述它的用法,偶回家了,88。





分享到:
评论
1 楼 sorphi 2007-03-15  
这里貌似只有$velocityCount比较适用。很少用tools,更常用传递给context一个具备某种实用方法的实例,比如$StringHelper.trim($input, $maxLength)。现在才知道还可以这么配置一些tools,呵呵

期待你的layout讲解,:)

相关推荐

    让人蛋疼的velocity减法运算

    标题“让人蛋疼的velocity减法运算”暗示了在使用Velocity模板语言(VTL)时,作者遇到了关于减法操作的困扰。Velocity是Apache软件基金会的一个开源项目,它提供了一个简单且强大的模板引擎,用于将Java对象的数据...

    velocity简易教程

    Velocity 是一个基于 Java 的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用由 Java 代码定义的对象。当 Velocity 应用于 web 开发时,界面设计人员可以和 Java 程序...

    Velocity标签大全

    可以使用 `$velocityCount` 获取当前循环的索引,`$velocityHasNext` 判断是否还有下一个元素。例如: ``` #foreach($item in $list) Index: $velocityCount, Item: $item #end ``` 6. **原样输出指令 (#...

    velocity语法,涉及其常用规整

    本文详细介绍了Velocity的语法规则和使用方法,包括变量、循环、条件语句、语句的嵌套、注释、关系和逻辑运算符、宏和数组的访问等方面。Velocity是一种功能强大且灵活的模板引擎,广泛应用于Web开发中。

    html文件中jquery与velocity变量中的$冲突的解决方法

    问题描述: 在使用velocity模版引擎的环境下,使用jquery时,如:$.fullCalendar.gcalFeed(‘http://www.google.com/calendar/feeds/sfzc1@realintelligence.com/public/basic’) 其中$与velocity变量中的$冲突。...

    JAVA中Velocity语法基础.pdf

    Velocity 的能力远不止 web 站点开发这个领域,例如, 它可以从模板(template)产生 SQL 和 PostScript 、XML ,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。 Velocity 也...

    velocity语法

    ### Velocity 语法详解 ...通过以上介绍,我们可以看到 Velocity 提供了强大的变量管理和循环功能,使得开发者能够更加灵活地控制模板的内容和结构。这不仅有助于提高开发效率,还能够确保模板的正确性和可维护性。

    velocity:A node velocity template engine. Node 版 velocity 模板引擎

    速度 节点速度模板引擎。 Node Edition速度模板引擎。0.特点完全实现了速度语法。 查看模板依赖性。...在模块中使用 渲染模板var Engine = require('velocity').Enginevar engine = new Engine( {{op

    Velocity 语法

    Velocity允许条件语句和循环语句进行嵌套,以实现更复杂的逻辑控制。 **4.1 示例** ```velocity #set($score = 85) #if ($score &gt;= 60) Pass #else Fail #foreach ($student in $students) $student.name #end #...

    velocity新手教程

    对于初学者来说,掌握Velocity的基本语法和特性至关重要。 首先,让我们深入了解Velocity的变量概念。在Velocity中,变量的定义以`#set`指令开始,例如`#set($name = "hello")`。变量是弱类型的,这意味着它们可以...

    Velocity语法笔记

    可以在 Velocity 中使用嵌套循环和条件语句,例如: ```velocity #foreach($element in $list) #foreach($innerElement in $innerList) This is $innerElement inside $element. #end This is $element. #end ``` ...

    velocity-engine-core-2.3-API文档-中英对照版.zip

    赠送jar包:velocity-engine-core-2.3.jar; 赠送原API文档:velocity-engine-core-2.3-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    velocity学习笔记

    其最大的特点是性能高、易于理解和使用,同时具备强大的功能集。在开发Web应用时,Velocity作为MVC架构中视图层的有力工具,能够有效地分离业务逻辑和表示层,使得代码更加清晰和可维护。 **二、Velocity脚本语法...

    velocity-tinytest:使用 Tinytest 和 Velocity

    如果你想在你的应用程序中使用 Tinytest 但没有 Velocity,请参阅我的包。安装由于 Velocity 的 API 中的重大更改,此包已从 Atmosphere 中删除。 tinytest包是自动包含的。快速开始将测试添加到tests/tinytest的....

    velocity为空判断

    在使用Velocity作为视图层处理数据时,常常需要进行空值判断,确保模板能够正确地处理不存在或者值为空的情况。下面我们将详细探讨在Velocity中如何进行空值和空字符串的判断。 ### 1. 判断Velocity变量是否为null ...

    velocity-deploy-action:一个简单的GitHub Action,用于跟踪Velocity中的部署

    - name : Send Velocity deployment uses : codeclimate/velocity-deploy-action@master with : token : ${{ secrets.VELOCITY_DEPLOYMENT_TOKEN }} version : ${{ outputs.version }} environment : ${{ outputs....

    velocity基本语法

    在Velocity模板语言中,变量的定义使用`#set`指令。Velocity支持弱类型的变量定义,这意味着在定义变量时无需指定其数据类型。例如: ```velocity #set($name = "hello") ``` 这里定义了一个名为`$name`的变量,其...

    velocity官方实例

    **Velocity官方实例详解** ...理解并熟练掌握Velocity的使用,对于提升Java Web开发中的用户体验和代码质量具有重要意义。通过不断实践和探索,我们可以更好地利用Velocity来满足各种复杂的页面生成需求。

    Velocity框架学习教程

    ### Velocity框架学习教程知识点 #### 一、Velocity框架概述 - **定义**:Velocity是一款开源的Java模板引擎,它的核心作用在于将...对于希望提高开发效率和质量的团队来说,学习和掌握Velocity无疑是非常有价值的。

Global site tag (gtag.js) - Google Analytics