code_money_guji's Blog

Happy coding

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>);