前言
关于velocity与SpringMVC的配置请参考前一篇文章,此处不再介绍。velocity作为Java模版引擎的主要目的是为了允许任何人使用简单而强大的模板语言来引用定义在Java代码中的对象。在velocity文件中可以给该页面指定模版布局,从而节省了大量的时间去写通用的模版布局。可以定义变量,与Java方法进行交互。
定义一个layout模版
在上一篇文章中提到了配置默认模版,当然也可以不使用默认模版即在要用到的页面的最上端写上
1
|
#set($layout='layout/yourlayout.vm') |
那么如何定义一个layout,看下面的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" >
< HEAD >
< TITLE >$!page_title 测试layout页面</ TITLE >
< meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" />
< meta http-equiv = "Content-Language" content = "zh-CN" />
< meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" />
< meta http-equiv = "Content-Language" content = "zh-CN" />
< link href = "/resources/lib/font-awesome/css/font-awesome.min.css" tppabs = "/resources/lib/font-awesome/css/font-awesome.min.css" rel = "stylesheet" type = "text/css" />
< link href = "/resources/lib/bootstrap/css/bootstrap.min.css" tppabs = "/resources/lib/bootstrap/css/bootstrap.min.css" rel = "stylesheet" type = "text/css" />
</ HEAD >
< BODY >
$screen_content
< script src = "/resources/lib/jquery-1.10.2.min.js" tppabs = "/resources/lib/jquery-1.10.2.min.js" type = "text/javascript" ></ script >
< script src = "/resources/lib/jquery-migrate-1.2.1.min.js" tppabs = "/resources/lib/jquery-migrate-1.2.1.min.js" type = "text/javascript" ></ script >
</ BODY >
</ HTML >
|
那么$screen_content所在的位置即是你所打开页面将要占用的位置。
定义一个变量
1
2
3
|
#set($var='xxxx') ##输出上面的变量直接使用$var |
魂环数组或者list
1
2
3
|
#foreach($ele in $list) < span >output element:$ele</ span >
#end |
条件判断
1
2
3
4
5
6
7
|
#if($var=='xxxx') < span >it is right</ span >
#elseif($var=='') < span >sorry</ span >
#else < span >it is wrong</ span >
#end |
内置对象
类似于JSP,velocity也有自己的内置对象,如$request,$response,$session这样以来我们就可以将Java对象request和response以及session里的东西轻而易举的展现在web页面里。
自定义标签(指令)
velocity同时也支持自定义标签,或者称为指令。如果查看velocity的源码就会发现有个directive.properties
1
2
3
4
5
6
7
8
9
|
directive. 1 =org.apache.velocity.runtime.directive.Foreach
directive. 2 =org.apache.velocity.runtime.directive.Include
directive. 3 =org.apache.velocity.runtime.directive.Parse
directive. 4 =org.apache.velocity.runtime.directive.Macro
directive. 5 =org.apache.velocity.runtime.directive.Literal
directive. 6 =org.apache.velocity.runtime.directive.Evaluate
directive. 7 =org.apache.velocity.runtime.directive.Break
directive. 8 =org.apache.velocity.runtime.directive.Define
directive. 9 =org.apache.velocity.runtime.directive.Stop
|
这里正是velocity当前所提供的9个标签(指令),下面我们新添加一个指令say
1
2
3
|
<body> #say( "hello" )
</body> |
java代码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
import java.io.IOException;
import java.io.Serializable;
import java.io.StringWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.context.InternalContextAdapter;
import org.apache.velocity.exception.MethodInvocationException;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.runtime.directive.Directive;
import org.apache.velocity.runtime.parser.node.Node;
import org.apache.velocity.runtime.parser.node.SimpleNode;
import org.springframework.beans.factory.annotation.Autowired;
import com.alibaba.citrus.service.template.TemplateService;
import com.alibaba.click.util.HostUtil;
public class Say extends Directive{
@Autowired
TemplateService templateService;
private static final VelocityEngine velocityEngine = new VelocityEngine();
@Override
public String getName() {
return "say" ;
}
@Override
public int getType() {
return LINE;
}
@Override
public boolean render(InternalContextAdapter context, Writer writer,
Node node) throws IOException, ResourceNotFoundException,
ParseErrorException, MethodInvocationException {
SimpleNode sn = (SimpleNode) node.jjtGetChild( 0 );
writer.write((String)sn.value(context));
return true ;
}
} |
接下来就可以在velocity.properties文件里添加上
1
|
相关推荐
Velocity 是一种 Java 模板引擎技术,由 Apache 提出,是一种基于 Java 的模板引擎,允许任何人使用简单而强大的模板语言来引用定义在 Java 代码中的对象。Velocity 的主要功能是桥梁 Model 和 View 之间,作为它们...
Velocity 是基于Java的模板引擎,广泛应用在阿里集 体各个子公司。Velocity模板适用于大量模板使用的场景,支持复杂的逻辑运算,包含 基本数据类型、变量赋值和函数等功能。Velocity.js 支持 Node.js 和浏览器环境。...
但是遗憾的是 , 市面上并没有一款详细的Velocity教程 , 特别是最新版本的velocity使用, 相关资料更是少的可怜 ! 所以我们这套课程有如下特色 : l 从基础开始 : 只要有一些java开发的基础就可以学习第一部分velocity...
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员...
JAVA的Velocity语法学习 内涵《Velocity_java开发指南》《Java的模板引擎Velocity初体验》 以及所必须的jar ,和大家一块学习,很好哦
主要介绍了JAVA velocity模板引擎使用实例,需要的朋友可以参考下
NULL 博文链接:https://kingmxj.iteye.com/blog/371850
Java Velocity模板引擎,简单字符串生成 https://blog.csdn.net/a497785609/article/details/130007990
java web 开发 velocity 包, Java模板引擎Velocity
velocity与freemaker、jstl并称为java web开发三大标签技术,一、定义变量二、遍历数组三、遍历HashTable四、判断是否为空五、数值、日期格式化六、国际化七、内建对象八、include、parse实现布局模块化
velocity是一款除JSP以外的另一款模板引擎,也许很多地方比常规的JSP更加好,或者说它这种模板引擎是基于常规JSP与一些标签整合后。 zip包中有两个jar包,提供使用。
velociy模板引擎介绍,使用example,demo。开发教程。
Velocity模板引擎技术在Java Web中的应用
Velocity 是一个基于 Java 的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用由 Java 代码定义的对象。 Velocity 的能力远不止 web 站点开发这个领域,例如,它可以从...
Velocity是一个基于java的模板引擎(template engine)。
Velocity 是一种基于 JAVA 的模板引擎,开发人员使用简单的模板语言就可以快速开发显示层,它使得显示层与程序代码分离。在 Struts2 框架中,Velocity 模板引擎可以与 Struts2 集成,实现了显示层与程序代码的分离。...
Java Velocity 项目生成器使用 Jave Velocity 模板构建前端 Web 应用程序的生成器。特征CSS 自动前缀带有 LiveReload 的内置预览服务器自动编译 CoffeeScript & Sass 自动 lint 你的脚本自动将图像内联到 css 文件...
java swing开发一款代码生成工具swing-generate,可通过velocity模板引擎在线定制模板
jetbrick-template 是一个新一代 Java 模板引擎,具有高性能和高扩展性。 适合于动态 HTML 页面输出或者代码生成,可替代 JSP 页面或者 Velocity 等模板。 指令和 Velocity 相似,表达式和 Java 保持一致,易学易用...