Velocity-VelocityLayoutServlet
参考资料:
http://velocity.apache.org/tools/devel/view/layoutservlet.html velocity官方资料
http://velocity.apache.org/engine/devel/user-guide.html 官方Velocity User-Guide
VelocityLayoutServlet:
提前先看:http://velocity.apache.org/tools/devel/view/ 如何使用VelocityViewServley.
1 更改web.xml
<servlet-class>org.apache.velocity.tools.view.servlet.VelocityLayoutServlet</servlet-class>
2 在velocity.properties文件中加入:
# Directory for layout templates,
# relative to web application root directory
#指向布局的目录 web-root下面的layout目录
tools.view.servlet.layout.directory = layout/
#指向默认布局的相关页面.
# Filepath of the default layout template
# relative to the layout directory
# NOT relative to the root directory of the webapp!
tools.view.servlet.layout.default.template = Default.vm<html>
3 在布局中使用$screen_content做为内容占用符:
<html>
<head>
<title>$!page_title</title> //"!"符号指,当page_title为null的时候显示空白,如果单纯的使用$page_title,
没值的时候将显示出"$page_title"这样的文本
</head>
<body>
$screen_content
</body>
</html>
需要注意的是title的内容依然是由$scrren_content的title来控制.在$scrren_content中使用#set($page_title="set you title")改变.
4 设置其他的模板:
(a)在请求的参数中添加:loyout=otherLoyout.vm
(b)在请求的页面中添加#set($loyout="otherLyout.vm")
5 加入其他的页面,例如"导航栏","页眉","页脚"等模板元素:
<html>
<head>
<title>$!page_title</title>
</head>
<body>
$screen_content
#parse( $screen_footer )
</body>
</html>
只需要在你定义好的$creen_content 模板中定义#set($scrren_footer="your footer")就ok.
6 下面是一个含有:上,下,左导航栏和main_scrren 主模板的布局:
# <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
# <head>
#
# </head>
# <body>
# <div id="header>#parse('vm/layout/header.vm')</div>
# <div id="content">
# <div id="sub">#parse($leftNavigation)</div>
# <div id="main">$screen_content</div>
# </div>
# <div id="footer">#parse('vm/layout/footer.vm')</div>
# </body>
# </html>
在scrren_content中设置sub: #set($leftNavagation,"your sub Navagation template");
并设置它所选用的layout: #set($layout,<上面的layout>);