velocity的一些用法

velocity模板其实就是java不分语法的翻译,用到的属性还是java的方法,get,set,等

1.截取部分字段substring

1 原始字符串:$!ag.tagValue,也许很长,前端页面展示时需要截取字符串。
2 #set($str=$!ag.tagValue)
3 
4 #if($str.length()>30)
5     #set($str=$str.substring(0,30))
6     $str ...
7 #else
8     $!ag.tagValue
9 #end

使用substring(begin,end)要注意,结束位置为:end索引-1

2.分割成数组split

 1 #if($!{result.creType} && $result.creType)
 2   #foreach ($element in $result.creType.split(","))
 3     #if($element == 1)
 4        <script>document.getElementsByName("cretype")[0].checked="checked";</script>
 5     #elseif($element == 2)
 6        <script>document.getElementsByName("cretype")[1].checked="checked";</script>
 7     #else
 8        <script>document.getElementsByName("cretype")[2].checked="checked";</script>              
 9     #end
10   #end
11 #end 

3.说到split成数组,就要看数组的几个可以用的方法

velocity 中的数组对应 Java 中的 List 对象。对于 Java 原生 Array 对象, 只能够 #foreach 进行遍历,无法使用 $arr[0] 和 $arr.get(0) 方法。

4.所以学java从不用数组,而用list

--事实上,list很方便,但list比数组效率低很多倍

  • $myarray.isEmpty()list是否为空
  • $myarray.size()获取list元素个数
  • $myarray.get(2)获取list指定下标的元素
  • $myarray.add()增加元素

5.计数用$velocityCount

在foreach中velocityCount表示循环的次数,从1开始,代表第一个循环。

6.空null和空字符串""的判断

在velocity中,非null被认为是真的,所以,判断null可以用

1 #if($!变量名)
2  ……
3 #else
4  ……
5 #end

或者既可以判断null也可以判断空字符串

1 #if("$!varName" != "")
2  不为null 或 ""
3 #else
4  ……
5 #end

7.基本语法错误#end不要忘

最开始的时候经常#if就完了报错,后来都是写完if就end,最后写中间。

8.#macro其实也很简单

原来感觉不懂不敢碰,自从写了个velocity分页后就忽然觉得宏不要太好用。事情是这样的,当时地区三级联动需要多处调用,提取出成公共模块,用#parse导入后出现冲突,因为一个页面用两次地区联动代码,id就重复了。于是想把id给变成参数,当我需要这个公用代码的时候,把id当参数传进去,最后render的结果就是html代码的id为我的参数。这样看来,宏就是一个函数。

想要用宏,先写好,然后parse,然后调用。

一个简单的宏函数:

1 #macro( d )
2 <tr><td></td></tr>
3 #end

使用它:如果在本页面,直接#d,如果是单独写了一个模板文件,那么需要先#parse(文件路径),再#d,如同js外部引用。

传参数的宏:

1 #macro( tablerows $color $somelist )
2 #foreach( $something in $somelist )
3 <tr><td bgcolor=$color>$something</td></tr>
4 #end
5 #end

一个综合使用,分页

 9引用外部文件#include和#parse

我开始经常用#include,后来发现刷新页面没变化,用#parse就好了。字面理解,一个是直接拿过来,一个是解析后。所以,如果是传html代码,可以直接include;若是包含velocity代码的要编译#parse.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏C/C++基础

Shell特殊字符

shell既是类Unix操作系统的命令解析器,用于解释执行用户输入的一连串命令,它类似于DOS下的command和后来Windows的cmd.exe。同时she...

601
来自专栏PHP技术

shell脚本编程入门

什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_tut for ((i=0; i<1...

3206
来自专栏落花落雨不落叶

杭电2016 数据的交换输出

33412
来自专栏点滴积累

shell脚本学习心得

近来主要捣鼓ubuntu,大多数项目中都用到了sh脚本作为启动脚本等,以前只是大概明白如何使用,今天需要自己修改并运行脚本就碰到了很多问题,所以决定静下心来学习...

2334
来自专栏Python

python2.7 的中文编码处理,解决UnicodeEncodeError: 'ascii' codec can't encode character 问题

2142
来自专栏菩提树下的杨过

bash/shell编程学习(1)

1)定义变量 myvar=abc #注:等号前后不能加空格 #或 myvar="abc" #或 myvar='abc' #注:如果变量后面的值中间本身没有空格,...

1819
来自专栏开源优测

python unittest之断言及示例

前言 python unintest单元测试框架提供了一整套内置的断言方法。 如果断言失败,则抛出一个AssertionError,并标识该测试为失败状态 如果...

4195
来自专栏CDA数据分析师

实用小工具,教你轻松转化Python通用数据格式

已独立成项目在github上面 dataformat, 涉及模块 os, getopt, sys。 1 需求 在进行hadoop测试时,需要造大量数据,例如某个...

1825
来自专栏张戈的专栏

Linux:sed命令详解

1. 简介 sed 是非交互式的编辑器。它不会修改文件,除非使用 shell 重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。 ? sed 编辑器逐...

3506
来自专栏开源优测

JMeter函数和变量11

前言 在jmeter中提供了功能强大的内置函数来帮助我们处理字符串、文件读写、计算、运行外部脚本等等能力。 要想在项目中切实运用来jmeter完成复杂的压测场景...

3416

扫描关注云+社区