`
qq_20921443
  • 浏览: 7457 次
社区版块
存档分类
最新评论

Java模版引擎velocity的使用

阅读更多

前言

关于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
say=cn.buglife.demo.msv.directive.Say
 
 
7
9
分享到:
评论

相关推荐

    Java的模板引擎Velocity初体验.pdf

    Velocity 是一种 Java 模板引擎技术,由 Apache 提出,是一种基于 Java 的模板引擎,允许任何人使用简单而强大的模板语言来引用定义在 Java 代码中的对象。Velocity 的主要功能是桥梁 Model 和 View 之间,作为它们...

    JavaScript模板引擎Velocity.js.zip

    Velocity 是基于Java的模板引擎,广泛应用在阿里集 体各个子公司。Velocity模板适用于大量模板使用的场景,支持复杂的逻辑运算,包含 基本数据类型、变量赋值和函数等功能。Velocity.js 支持 Node.js 和浏览器环境。...

    Java进阶教程Velocity快速掌握模板引擎视频

    但是遗憾的是 , 市面上并没有一款详细的Velocity教程 , 特别是最新版本的velocity使用, 相关资料更是少的可怜 ! 所以我们这套课程有如下特色 : l 从基础开始 : 只要有一些java开发的基础就可以学习第一部分velocity...

    模板引擎 Velocity 官方最新版下载

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

    JAVA的Velocity语法学习

    JAVA的Velocity语法学习 内涵《Velocity_java开发指南》《Java的模板引擎Velocity初体验》 以及所必须的jar ,和大家一块学习,很好哦

    JAVA velocity模板引擎使用实例

    主要介绍了JAVA velocity模板引擎使用实例,需要的朋友可以参考下

    Velocity--java的模板引擎

    NULL 博文链接:https://kingmxj.iteye.com/blog/371850

    Java Velocity模板引擎,简单字符串生成

    Java Velocity模板引擎,简单字符串生成 https://blog.csdn.net/a497785609/article/details/130007990

    velocity1.5

    java web 开发 velocity 包, Java模板引擎Velocity

    velocity模板引擎

    velocity与freemaker、jstl并称为java web开发三大标签技术,一、定义变量二、遍历数组三、遍历HashTable四、判断是否为空五、数值、日期格式化六、国际化七、内建对象八、include、parse实现布局模块化

    velocity开发包vm模板引擎

    velocity是一款除JSP以外的另一款模板引擎,也许很多地方比常规的JSP更加好,或者说它这种模板引擎是基于常规JSP与一些标签整合后。 zip包中有两个jar包,提供使用。

    javaWeb应用开发之velocity模板使用

    velociy模板引擎介绍,使用example,demo。开发教程。

    Velocity模板引擎技术在Java Web中的应用.pdf

    Velocity模板引擎技术在Java Web中的应用

    Velocity文档中文版

    Velocity 是一个基于 Java 的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用由 Java 代码定义的对象。 Velocity 的能力远不止 web 站点开发这个领域,例如,它可以从...

    Velocity_中文手册

    Velocity是一个基于java的模板引擎(template engine)。

    Struts2与Velocity模板

    Velocity 是一种基于 JAVA 的模板引擎,开发人员使用简单的模板语言就可以快速开发显示层,它使得显示层与程序代码分离。在 Struts2 框架中,Velocity 模板引擎可以与 Struts2 集成,实现了显示层与程序代码的分离。...

    generator-velocity:使用 Java Velocity 模板搭建前端 Web 应用程序

    Java Velocity 项目生成器使用 Jave Velocity 模板构建前端 Web 应用程序的生成器。特征CSS 自动前缀带有 LiveReload 的内置预览服务器自动编译 CoffeeScript & Sass 自动 lint 你的脚本自动将图像内联到 css 文件...

    java swing开发一款代码生成工具swing-generate,可通过velocity模板引擎在线定制模板

    java swing开发一款代码生成工具swing-generate,可通过velocity模板引擎在线定制模板

    jetbrick-template是一个新一代Java模板引擎具有高性能和高扩展性

    jetbrick-template 是一个新一代 Java 模板引擎,具有高性能和高扩展性。 适合于动态 HTML 页面输出或者代码生成,可替代 JSP 页面或者 Velocity 等模板。 指令和 Velocity 相似,表达式和 Java 保持一致,易学易用...

Global site tag (gtag.js) - Google Analytics