Velocity布局(layout)功能介绍

对于一个WEB应用来说,页面的基本结构往往是固定的,页面中的很多部分,例如页面统一的头部、尾部和菜单,我们一般是不太需要变化的,各个页面基本一致,变化的往往是页面的具体内容部分,这样,布局(layout)功能的使用,就能大大减化前端页面的复杂性了。这里简单介绍一下如何使用velocity框架来实现页面的布局。

         我们知道,要在spring框架中配置velocity,一般需要配置两个bean,一个是velocityConfig, 别一个则是viewResolver。先来看velocityConfig的配置,基本配置如下所示,这里和不使用布局的配置方式没有任何差别。

 

Xml代码   收藏代码
  1. <!-- velocity 配置-->  
  2. <bean id= "velocityConfig"  
  3.  class= "org.springframework.web.servlet.view.velocity.VelocityConfigurer">  
  4.          <property name= "resourceLoaderPath">  
  5.                    <value>WEB-INF/view</value>  
  6.          </property>  
  7.          <property name= "velocityProperties">  
  8.                    <props>  
  9.                             <prop key= "input.encoding">utf-8</prop>  
  10.                             <prop key= "output.encoding">utf-8</prop>  
  11.                    </props>  
  12.          </property>  
  13. </bean>  

 

 

 

         接下来看看viewResolver的配置,在使用布局时,一般会配置如下:

 

Xml代码   收藏代码
  1. <bean id= "viewResolver"  
  2. class= "org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver">  
  3.          <property name= "cache" value= "true"/>  
  4.          <property name= "prefix" value= "/"/>  
  5.          <property name= "suffix" value= ".vm"/>  
  6.          <property name= "contentType">  
  7.                    <value>text/html;charset=utf-8</value>  
  8.          </property>  
  9.          <property name="toolboxConfigLocation">  
  10.                    <value>/WEB-INF/toolbox.xml</value>  
  11.          </property>  
  12.          <property name="layoutUrl" value="layout/layout.vm" />  
  13.          <property name="allowSessionOverride" value="true"/>  
  14.          <property name="allowRequestOverride" value="true"/>  
  15.          <property name="exposeSessionAttributes" value="true"/>  
  16.          <property name="requestContextAttribute" value="rc"/>  
  17.          <property name="exposeRequestAttributes" value="true"/>  
  18. </bean>  

 

 

         如果你配置过velocity,你会发现与你之前的配置主要有两个地方的差别:

    1.  一般情况下,当我们不使用velocity的布局功能时,我们一般会把viewResolver的class配置为:

org.springframework.web.servlet.view.velocity.VelocityViewResolver,当需要使用布局功能的时候,viewResolver的class需要配置为:

org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver,顾名思义,从命名中我们就能看出来这个viewResolver是支持layout功能的。

    2.  另外一点不同的是,这里多了一个layoutUrl的属性配置:<property name="layoutUrl" value="layout/layout.vm" />, 这个配置是设置你的layout文件的存在路径,需要注意的是,这个路径不是相对于webapp路径来的,而是相对于velocityConfig配置中的resourceLoaderPath属性配置的路径(resourceLoaderPath的路径是相对于webapp的路径)。

 

看看一般情况下,我们的layout页面大概长什么样子吧:

 

Html代码   收藏代码
  1. <body>  
  2.         <div class="content">  
  3.             #parse("/common/header.vm")  
  4.             <div class="content-info">  
  5.                 #parse("/common/leftMenu.vm")  
  6.                 <div class="content-main">  
  7.                     $screen_content  
  8.                 </div>  
  9.             </div>  
  10.             #parse("common/footer.vm")  
  11.         </div>  
  12. </body>  

 

 

解释一下:如果你在处理某个请求时返回了a.vm模板,那么最终返回的页面是:将a.vm模板的内容填充layout页面的$screen_content占位符的内容,然后再将整个填充后的页面返回给用户。如果有兴趣你可以看一下大致的实现原理,其实很简单,就是先调用velocity引擎渲染请求返回的模板,将该渲染结果(一个String类型的字符串)作为一参数传递给layout页面,参数名称就是screen_content,然后再次调用引擎渲染layout页面,这样就会把该screen_content参数对应的值作为页面的一部分渲染出来了,从而实现整个页面的布局功能。

这样,我们就简单介绍了如何简单配置和使用velocity的layout功能了,这里你可以会有疑问了,如果我某个页面需要使用不同的layout页面,甚至我有些页面不需要使用layout功能,该怎么办?其实很简单,我们前面viewResolver配置中,配置的只是默认的layout页面的地址,如果你要使用不同的layout页面,只需在你要返回的页面中如下简单设置一下即可:

 

Html代码   收藏代码
  1. #set($layout = "/layout/layout2.vm")  

 

         这样,我们就强制我们的这个页面使用的是layout2.vm这个页面布局。按照这个思路,如果我在某个特殊的页面,不想使用layout功能了,我们可以再指定另外一个layout页面,只不过这个layout页面内容比较特殊,它没有一般布局页面中有的那些页面统一的头部、尾部和菜单,只有如下所示的一行代码就可以了:

 

Html代码   收藏代码
  1. $screen_content  

 

   由于暂时没找到如何在某个页面中,关闭页面的layout功能,所以想到了上面的方式投机取巧地实现了类似的功能,如果大家有好的方式可以指出。

出自

小米万兆路由器里的Docker安装可道云(Kodexplorer)私有网盘 小米2022年12月份发布了万兆路由器,里面可以使用Docker。 今天尝试在小米的万兆路由器里安装[可道云](http://kodcloud.com/)(Kodexplorer)私有网盘。 阅读详情

相关推荐

从GEFCom到UCI:手把手教你构建电力负荷时空预测模型(Python版)

本文详细介绍了如何从GEFCom到UCI数据集构建电力负荷时空预测模型(Python版),涵盖数据集解析、时空特征工程、模型架构设计及工业部署优化。通过多任务图神经网络(MTGNN)实现高精度预测,并结合边缘计算和在线学习机制提升实际应用效果,为能源管理系统提供可靠解决方案。

lambda的博客 813

velocitylayout生成静态页面

随着网站一步步的发展,网站的静态化越来越重要。针对于目前市场上存在Velocity、FreeMarker、JSP三大模板引擎技术之一(现在又有Thymeleaf​)的Velocity技术进行分析。 针对 velocity 模板直接生成 html 静态页面网上资料太多了,随便一搜一大把,这里不做太多的讲解。这里主要是针对velocitylayout方式的如何生成静态页面做个简单的介绍。

Nacey 1025

INCA基础教程

以软件自带Demo为例记录INCA学习过程,主要内容包括测量与标定。

yunqianrui的博客 6万+

Velocity版面设计 -- $screen_content

<br />http://www.blogjava.net/liuwentao253/archive/2006/10/24/76915.html

jyu_mit的专栏 4260

批量读取_MCGS触摸屏如何实现批量读取modbus数据的方法?

前两天,在一个QQ群里,有同行的朋友问,在MCGS中如何实现批量读取数据,因为他当时面临设备,通讯协议才是MODBUS RTU,同时厂家说地址不能分开读,必须是连续的。鉴于他提供的消息是能够设置的地方都试过了。为此,我直接告诉通过脚本,批量读取的方案。那么这个方案究竟如何实现?且看我下面慢慢道来。一、工具1.modsim:仿真PLC或者第三方设备。2.MCGS组态软件3.串口软件:在电脑中生成两不...

weixin_32511509的博客 8161

ios生成海报使用dom-to-image中toPng报错isTrusted:true

主要是ios中safari浏览器解析错误,引起的报错,主要引起原因toPng会调用toSvg,toSvg直接将html标签内容通过svg中foreignObject标签直接包裹,然后转base64, 通过data:image/svg+xml;解决办法:二次生成(调用两次),判断ios or 安卓,生成第一次生成,不用参数,例如:scale: 3,在第二次生成再进行清晰度操作,避免多次生成,引起性能消耗。以上种种很多案例,使用canvase进行转换的,标签丢失,直接toPng版本的,兼容性问题。

weixin_44601570的博客 2106

springboot+velocityLayout和velocity-tools

习惯每次做完一个项目把项目所得进行分享: velocity作为模板语言已经存在很久,近期接触下来感觉用的还行,  一:  先介绍下velocity-tools的好用之处,接下来再介绍如何整合。 整合了velocity-tools就不需要再导入什么标签了,这个velocity-tool中的工具有很多可以用于处理页面数据的东西。如格式化金额:$number.format("#0.00",

lileronglilerong的专栏 1万+

su03t语音模块烧录识别不出问题解决方法

su03t语音sdk烧录无法识别问题

weixin_49387645的博客 6390

struts2 支持velocity的模板布局功能

struts2 是支持 velocity 的,所以不需要什么大规模更改.大多就是测试的时候按提示添加缺少的 class.这里让它支持 velocity 的布局功能     首先在项目中新建个类,路径如下.这个类改写了 struts2 里的 velocity 类   package struts2.velocity; import java.io.OutputStreamWriter; i

Rogue-Creasy 1580

从零到一构建一个智能爬虫 Agent 完整教程

本文将打造一个具备自主决策、动态解析、反反爬、持久化能力的智能爬虫 Agent

数据知道的博客 4798

30天入门 SAP BTP 开发系列之十八:保姆级教程 - 如何部署 SAP UI5 到 SAP BTP Cloud Foundry 环境

本文摘要: 本文详细介绍了如何将SAP UI5应用部署到Cloud Foundry环境。首先需完成前17篇教程学习,创建SAP BTP子账户并启用Cloud Foundry环境。在SAP Business Application Studio中创建Fiori开发空间,导入GitHub上的UI5项目代码。通过npm run build命令打包成mtar文件后,使用cf deploy命令部署到Cloud Foundry。部署成功后,可在BTP控制台查看应用或通过命令行获取访问URL。整个过程涵盖了环境准备、代码

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1020

Velocity的layout功能

一、从VelocityViewServlet到VelocityLayoutServlet使用Velocity开发web应用时,需要在web.xml中配置一个Velocity提供的VelocityViewServlet接受处理对velocity模板(即vm文件)的forward访问。VelocityViewServlet负责将设置在request中的attribute“读出”和模板文件进行merg...

weixin_30321449的博客 201

YOLOv12改进前必看 - YAML模型配置文件详细解读(再也不用担心通道数不匹配) 附网络结构图

YOLOv12的模型配置文件在中,里面包含yolov12的以及的不同大小的模型,本文将详细介绍一下YOLOv12模型文件中各参数的含义。

Limiiiing的博客 3278

Velocity layout(布局)功能解释

文章转载于http://qstar.iteye.com/blog/1677130 对于一个WEB应用来说,页面的基本结构往往是固定的,页面中的很多部分,例如页面统一的头部、尾部和菜单,我们一般是不太需要变化的,各个页面基本一致,变化的往往是页面的具体内容部分,这样,布局(layout)功能的使用,就能大大减化前端页面的复杂性了。这里简单介绍一下如何使用velocity框架来实现页面的布局。  

chen_lay的博客 3199

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Velocity布局(layout)介绍

对于一个WEB应用来说,页面的基本结构往往是固定的,页面中的很多部分,例如页面统一的头部、尾部和菜单,我们一般是不太需要变化的,各个页面基本一致,变化的往往是页面的具体内容部分,这样,布局(layout)功能的使用,就能大大减化前端页面的复杂性了。这里简单介绍一下如何使用velocity框架来实现页面的布局。          我们知道,要在spring框架中配置velocity,一般需要配置两

blues的博客 1814

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Velocity 布局laytou功能(二)-结合SpringMVC实现Velocity Layout功能

Velocity + Spring 实现Velocity Layout功能

二总的猫 4371

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Struts 2 里面实现 Velocity Layout

skatou@zju 2009-04-27 02:38:42 最近刚开始学习用这两个东西做点东西,既然要做网站很自然就会想到要实现一个可以不同页面共用的layout,于是去google,发现讨论这个东西的都是“进一步提升Struts 2 对Velocity 的支持力度”这篇文章。 文章里面讲了两个方法,一个是直接用VelocityLayoutServlet替换VelocityVie

skatou的专栏 1351

velocity布局layout

从VelocityViewServlet到VelocityLayoutServlet   使用Velocity开发web应用时,需要在web.xml中配置一个Velocity提供的VelocityViewServlet接受处理对velocity模板(即vm文件)的forward访问。(MVC,view只是做展示,通过control,转发到view) VelocityViewServlet负责...

lihfqq的博客 295
上一篇: ps处理图片合并以及图片矩形角转圆角
下一篇: mysql查看表字段注释
weixir123
博客等级 码龄16年 1粉丝 207原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值