大多数网站的每个页面布局差别不是太大,除非一些特殊页面例如 门户首页等。如果每个页面独立一个文件,则会导致不同文件出现大量相同的代码,我们也可以把这些相同的代码抽取出来放在一个独立的小文件,需要的时候利用 Velocity的#parse指令来嵌入到目标页面中。但是此法却对页面上用于控制排版的HTML代码无效,因为控制整个页面排版的代码一般会贯穿整个 文件,开头、结尾皆有,无法分拆到独立的文件上,因此就有将页面的layout独立出来的,以减小页面的代码量的需要。
我在用Velocity时一般都是使用Velocity-Tools项目的VelocityViewServlet来负责解析所有Velocity 模板的请求,其实VelocityTools也提供另外一个Servlet便是VelocityLayoutServlet,该类直接从 VelocityViewServlet继承而来,通过使用VelocityLayoutServlet可以让我们很容易的将页面的布局控制模板和数据模 板分隔开来。欲使用此功能,请遵循以下步骤:
1。使用VelocityLayoutServlet类:原先的VelocityViewServlet直接替换成 VelocityLayoutServlet;
2。配制VelocityLayoutServlet:打开velocity.properties增加配制如下:
# 处理错误信息的模板路径
# relative to web application root directory
tools.view.servlet.error.template = error.vm
# 所有布局文件的默认路径
# relative to web application root directory
tools.view.servlet.layout.directory = /WEB-INF/layout/
# 默认的布局文件
# relative to the layout directory
# NOT relative to the root directory of the webapp!
tools.view.servlet.layout.default.template = default.vm
3。布局测试
编写测试布局文件default.vm放置于上述配置中的默认布局文件存放路径中,内容如下
<html>
<head>
<title>$!page_title</title>
</head>
<body>
$screen_content
</body>
</html>
上面源码中$screen_content便是VelocityLayoutServlet保留的关键字,Velocity依此关键字来潜入实际被 引用的页面内容,其他变量开发者可以灵活处理。
另编写测试页面test.vm存放于web根目录下,内容如下
#set($page_title="Layout Test")
Hello Velocity Layout!
启动服务器,测试该页面输出的HTML内容如下:
<html>
<head>
<title>Layout Test</title>
</head>
<body>
Hello Velocity Layout!
</body>
</html>
转自:http://www.oschina.net/question/12_4580
分享到:
相关推荐
Velocity入门教程,语法,Velocity布局,Spring框架集成Velocity
Itext提供了丰富的API,可以用来创建PDF文档,设置字体、颜色、布局等,以及插入图像、表格、列表等内容。它可以处理PDF文档的复杂结构,如书签、链接、注释等。 整合Velocity和Itext的过程如下: 1. **创建 ...
Velocity是一款基于Java的模板引擎,它允许开发者将HTML页面设计与业务逻辑相分离,让网页设计人员专注于页面布局,而程序员则专注于编写控制逻辑。Velocity通过简单的语法使得模板语言与Java代码隔离,提供了一种...
在1.7版本中,Velocity提供了一种简洁、高效的模板语言,使得非程序员(如内容创作者)也能方便地修改页面布局,而程序员则负责处理数据和业务逻辑。 **核心概念和特点:** 1. **模板语言**:Velocity使用自己的...
- **配置**:配置Velocity涉及设置模板路径、缓存策略、编码方式等,通常在Web应用的`web.xml`文件中进行。 - **模板开发**:编写模板文件,使用VTL语法结合Java对象生成动态内容。 - **调试与日志**:Velocity...
- **分离关注点**:模板设计师专注于布局和样式,而开发者处理业务逻辑,两者的工作可以独立进行。 - **高效性能**:Velocity在编译模板后生成Java源码,然后由JVM执行,这使得其运行速度快且资源消耗低。 - **可...
Velocity的主要目标是将呈现逻辑从应用逻辑中分离出来,使得开发者可以专注于业务逻辑的实现,而设计人员则可以专注于页面的布局和设计。这个官方工具包不仅包含了Velocity的核心库,还提供了丰富的示例,帮助用户...
总结起来,Velocity 是一个强大而灵活的模板引擎,它简化了动态内容生成的过程,使得开发者可以专注于业务逻辑,而设计师则可以专注于页面布局。结合其丰富的配置选项和扩展机制,Velocity 成为了Java Web开发中的...
Velocity在Web开发中常被用来生成HTML、XML、CSV或其他格式的文档,将内容和表现分离,让开发者专注于业务逻辑而不用关心页面布局。在这个"velocity的学习资料"压缩包中,我们很可能会找到关于Velocity的基本概念、...
例如,`#set ($a = "Velocity")`这条VTL语句设置了变量$a的值为"Velocity"。而在HTML中,`$customer.Name!`这样的引用则会从Java代码中获取用户的名字,动态地显示在页面上。`#foreach`循环和`#if`条件判断可以用来...
2. **分离关注点**:Velocity 允许设计师使用 HTML 和 CSS 进行页面布局,而开发者只需关注数据处理,两者可以独立工作。 3. **强大的上下文**:Velocity 提供了一个上下文对象,用于存储和传递数据到模板。开发者...
Velocity的主要目的是将呈现逻辑从业务逻辑中分离出来,使得开发者可以专注于应用程序的后端处理,而设计师则可以自由地设计和编辑页面布局。在这个“velocity例子”中,我们将深入探讨Java与Velocity的集成以及...
在`pom.xml`的`build`部分,配置这个插件,指定模板目录、输出目录和模板引擎的其他设置。 3. **编写Velocity模板**:在项目中创建一个目录来存放Velocity模板文件,这些文件通常以`.vm`为扩展名。 4. **生成静态...
Velocity通过将逻辑与呈现分离,使得开发者可以专注于业务逻辑,而设计师可以自由地设计页面布局,提高了开发效率和代码的可维护性。 在Web应用开发中,Velocity作为一个强大的模板语言,广泛应用于生成HTML、XML、...
Velocity通过简单的语法,将业务逻辑与表现层分离,使得开发者可以专注于业务逻辑的编写,而不用关心HTML、CSS等页面布局的细节。这极大地提高了开发效率和代码的可维护性。 ** Velocity语法基础 ** 1. 变量引用:...
Velocity是一款开源的Java模板引擎,它允许开发者将HTML页面的呈现逻辑与业务逻辑分离,使得网页设计人员可以专注于页面的布局和样式,而程序员则专注于编写应用程序的后端逻辑。Velocity由Apache软件基金会开发并...
VTL的主要目标是分离内容和表现,使得设计师可以专注于页面布局,而开发者则处理业务逻辑。 ### 1.1 变量引用 在Velocity中,你可以通过`$`符号来引用对象或变量。例如,`$name`表示一个名为`name`的变量。如果该...
1. **Web 应用开发**:Velocity 可以作为 JSP 的替代品,提供更简洁、更易于维护的模板语言,使得开发者可以专注于页面布局,而不必关心 HTML 代码中的 Java 语法。 2. **生成静态内容**:Velocity 也可以用来生成...
Velocity 是一个开源的 Java 模板引擎,它允许开发者将业务逻辑与页面展示分离,使得 HTML 页面更专注于布局和设计,而将动态数据处理交由后端代码处理。Velocity 通过使用简单的模板语言(VTL,Velocity Template ...