关闭

velocity 模板引擎

413人阅读 评论(0) 收藏 举报
分类:

freemarker等的同类产品,可脱离web环境使用。

在web项目中与springMVC搭配,可参考<spring mvc中的视图框架>

它是一个apache的项目,地址为:http://velocity.apache.org/engine/1.7/user-guide.html

1.依赖

<!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity -->
		<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity</artifactId>
			<version>1.7</version>
		</dependency>

2.例子

下面是java文件:

import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.junit.Test;

import com.yichudu.meweb.dto.GaoKaoScoreDto;

public class velocityTest {
	@Test
	public void velocityTestFun() {
		// 初始化模板引擎
		VelocityEngine ve = new VelocityEngine();
		// 配置引擎上下文对象
		VelocityContext ctx = new VelocityContext();
		ctx.put("gaoKaoScoreList", genData());
		// 加载模板文件
		Template template = ve.getTemplate("/WebContent/WEB-INF/template/test.vm");
		StringWriter sw = new StringWriter();
		// 渲染模板
		template.merge(ctx, sw);
		System.out.print(sw.toString());
	}

	public List<GaoKaoScoreDto> genData() {
		List<GaoKaoScoreDto> gaoKaoScoreList = new ArrayList<>();
		GaoKaoScoreDto dto = new GaoKaoScoreDto();
		dto.chinese = 124;
		dto.english = 100;
		dto.idCard = "123";
		dto.luoFenplusZhaoGuFen = 123;
		dto.math = 1;
		dto.name = "xiaoming";
		dto.no = "12";
		dto.ranking = 2;
		dto.total = 1234;
		dto.type = "arts";
		gaoKaoScoreList.add(dto);
		return gaoKaoScoreList;
	}
}
/*
<tbody>
<tr>
<td>12</td>
<td>xiaoming</td>
<td>123</td>
<td>arts</td>
<td>124</td>
<td>1</td>
<td>0</td>
<td>100</td>
<td>1234</td>
<td>123</td>
<td>2</td>
</tr>
</tbody>
*/
下面是vm模板文件:
<tbody>
	#foreach ($element in $gaoKaoScoreList)
		<tr>
			<td>$element.no</td>
			<td>$element.name</td>
			<td>$element.idCard</td>
			<td>$element.type</td>
			<td>$element.chinese</td>
			<td>$element.math</td>
			<td>$element.comprehensive</td>
			<td>$element.english</td>
			<td>$element.total</td>
			<td>$element.luoFenplusZhaoGuFen</td>
			<td>$element.ranking</td>
		</tr>
	#end
</tbody>

3.指令

3.1 foreach

#foreach ($student in $studentList)
<name>$student.name</name>
<grade>$student.grade</grade>
#end

3.2 注解

## This is a single line comment.
上面是行注解,下面是块注解.
#*
  Thus begins a multi-line comment. Online visitors won't
  see this text because the Velocity Templating Engine will
  ignore it.
*#

3.3 参数赋值

#set( $foo = "bar" )

3.4 访问对象的字段

$foo.getBar()
## is the same as
$foo.Bar

3.5 if-else

#if( $foo < 10 )
    **Go North**
#elseif( $foo == 10 )
    **Go East**
#elseif( $bar == 6 )
    **Go South**
#else
    **Go West**
#end

3.6 变量边界

#*
页面中有一个$someonename,此时,Velocity将把someonename作为变量名,若我们程序是想在someone这 个变量的后面紧接着显示name字符,则上面的标签应该改成
*#
${someone}name

3.7 include

若干个网页有相同的页脚,除了用<iframe>标签,还可以用#include指令.区别在于<iframe>标签的内容是一个完整的html,而include进来的只是共用的文本片段.
<body>
#include('common/footer.html')
</body>

3.8 parse

与include类似,前者引入的是普通文本,后者引入的是含有指令的文本,并作解析.

3.9 控制不存在的变量

变量前面加个叹号, 若该变量不存在, 该位置留空.
如 $!name .

4.IDE插件

在 eclipse marketplace中搜索veloedit,安装即可。

图4-1 veloedit的高亮与提示效果


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:491335次
    • 积分:12458
    • 等级:
    • 排名:第1125名
    • 原创:731篇
    • 转载:7篇
    • 译文:0篇
    • 评论:79条
    最新评论