`
snoopy7713
  • 浏览: 1149213 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

springmvc+velocity 在vm模板上添加通用工具类对象变量

阅读更多

在平时工作的项目中经常会在vm模板中添加自定义的工具类,由于上班时用的是sofa框架,里面的配置跟spring还是有区别的,以前自己也没有做过,今天就尝试了一下,主要配置如下:

Xml代码  收藏代码
  1. <!-- 让Spring启用对annotation的支持 -->   
  2.     < context:annotation-config > </ context:annotation-config >   
  3.   
  4. <!-- 自动扫描org.yonge路径下的所有文件,并根据注解完成注入的工作 -->   
  5.     < context:component-scan   base-package = "com.yonge" > </ context:component-scan >   
  6.   
  7.     <!-- 配置velocity引擎 -->   
  8.     < bean   id = "velocityConfigurer"   
  9.         class = "org.springframework.web.servlet.view.velocity.VelocityConfigurer" >   
  10.         < property   name = "resourceLoaderPath"   value = "/"   /> <!-- 模板存放的路径 -->   
  11.         < property   name = "velocityProperties" >   
  12.             < props >   
  13.                 < prop   key = "input.encoding" > gbk </ prop >   
  14.                 < prop   key = "output.encoding" > gbk </ prop >   
  15.             </ props >   
  16.         </ property >   
  17.     </ bean >   
  18.   
  19.     <!-- 配置视图的显示 -->   
  20.     < bean   id = "ViewResolver"   
  21.         class = "org.springframework.web.servlet.view.velocity.VelocityViewResolver" >   
  22.         < property   name = "prefix"   value = "/"   /> <!-- 视图文件的前缀,即存放的路径 -->   
  23.         < property   name = "suffix"   value = ".vm"   /> <!-- 视图文件的后缀名 -->   
  24.         < property   name = "exposeRequestAttributes"   value = "true"   /> <!-- 暴露request属性 -->   
  25.         < property   name = "toolboxConfigLocation"   value = "/WEB-INF/velocity/tools.xml"   /> <!-- 配置工具类 -->   
  26.         <!-- VelocityToolboxView 类只支持1.X的velocitytools -->   
  27.         <!--< property   name = "viewClass"   
  28.             value = "org.springframework.web.servlet.view.velocity.VelocityToolboxView"   />  -- >   
  29.         < property   name = "viewClass"   
  30.             value = "com.yonge.web.velocity.VelocityToolbox20View"   />   
  31.         <!-- < property   name = "viewClass"   
  32.             value = "org.springframework.web.servlet.view.velocity.VelocityView"   />  -- >   
  33.     </ bean >   
  34.   
  35.     <!-- 将自定义工具类 注入到VelocityContext中-->   
  36.     <!-- < bean   name = "velocityView"   
  37.         class = "org.springframework.web.servlet.view.velocity.VelocityView" >   
  38.         < property   name = "toolAttributes" >   
  39.             < map >   
  40.                 < entry   key = "dateUtil"   value = "com.yonge.web.util.DateUtil"   />   
  41.             </ map >   
  42.         </ property >   
  43.         < property   name = "url"   value = "/"   />   
  44.     </ bean >  -- >   

 

上面的配置文件中,VelocityToolbox20View是重写的一个类,是在网上copy的,如下:

Java代码  收藏代码
  1. public   class  VelocityToolbox20View  extends  VelocityToolboxView {  
  2.     @Override   
  3.     protected  Context createVelocityContext(Map<String, Object> model,  
  4.             HttpServletRequest request, HttpServletResponse response)  
  5.             throws  Exception { // Create a   
  6.                                 // ChainedContext   
  7.                                 // instance.   
  8.         ViewToolContext ctx;  
  9.   
  10.         ctx = new  ViewToolContext(getVelocityEngine(), request, response,  
  11.                 getServletContext());  
  12.   
  13.         ctx.putAll(model);  
  14.   
  15.         if  ( this .getToolboxConfigLocation() !=  null ) {  
  16.             ToolManager tm = new  ToolManager();  
  17.             tm.setVelocityEngine(getVelocityEngine());  
  18.             tm.configure(getServletContext().getRealPath(  
  19.                     getToolboxConfigLocation()));  
  20.             if  (tm.getToolboxFactory().hasTools(Scope.REQUEST)) {  
  21.                 ctx.addToolbox(tm.getToolboxFactory().createToolbox(  
  22.                         Scope.REQUEST));  
  23.             }  
  24.             if  (tm.getToolboxFactory().hasTools(Scope.APPLICATION)) {  
  25.                 ctx.addToolbox(tm.getToolboxFactory().createToolbox(  
  26.                         Scope.APPLICATION));  
  27.             }  
  28.             if  (tm.getToolboxFactory().hasTools(Scope.SESSION)) {  
  29.                 ctx.addToolbox(tm.getToolboxFactory().createToolbox(  
  30.                         Scope.SESSION));  
  31.             }  
  32.         }  
  33.         return  ctx;  
  34.     }  
  35. }  

 velocityTool的配置文件:

Xml代码  收藏代码
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2.   
  3. < tools >   
  4.     < data   type = "boolean"   key = "xhtml"   value = "true" />   
  5.     < data   type = "boolean"   key = "isSimple"   value = "true" />   
  6.     < data   type = "number"   key = "version"   value = "2.0" />   
  7.     < data   key = "foo" > this is foo </ data >   
  8.     < data   key = "bar" > this is bar. </ data >   
  9.       
  10.     < toolbox   scope = "request" >   
  11.         <!-- <tool key="toytool" class="ToyTool" restrictTo="index*"/> -->   
  12.     </ toolbox >   
  13.       
  14.     < toolbox   scope = "session" >   
  15.         <!-- <tool key="map" class="java.util.HashMap"/> -->   
  16.     </ toolbox >   
  17.       
  18.     < toolbox   scope = "application" >   
  19.         <!-- <tool key="map" class="java.util.HashMap"/> -->   
  20.         < tool   key = "dateUtil"   class = "com.yonge.web.util.DateUtil" />   
  21.     </ toolbox >   
  22. </ tools >   

 用velocityTool很好的解决了添加自定义工具类的问题,但是我最开始的时候是想通过另一种VelocityView解决这个问题,向 velocityView中注入toolAttributes属性(如上面的配置文件),该属性的类型是一个Map<String, Class>,key是vm模板上使用的变量名,value是对应自定义的工具类,它也会将toolAttributes属性添加到 velocityContext中,但是我却遇到了velocityView不能注入viewClass的问题,因为velocityView是一个实例 对象,而viewClass是一个class类型的,导致类型转换错误,希望知道的兄弟们回复一下,thx!!!

分享到:
评论
1 楼 gwgyk 2013-03-14  
我用spring mvc整合velocity的时候,页面上总是不能正常显示出变量的值,这是怎么回事呢?

http://www.oschina.net/question/1011092_93166

相关推荐

    maven+springMVC+mybatis+velocity+mysql+junit项目框架搭建

    本项目框架“maven+springMVC+mybatis+velocity+mysql+junit”提供了一种高效、灵活且可维护的解决方案。以下将详细讲解这些组件及其作用。 1. Maven: Maven是一个项目管理工具,用于构建、依赖管理和项目信息...

    Spring+SpringMVC+Mybatis+Velocity+Maven demo

    Spring、SpringMVC、Mybatis、Velocity和Maven是Java Web开发中常用的一组技术栈,它们各自在软件开发的不同层面发挥着重要作用。这个压缩包文件的标题和描述表明,它提供了一个集成这些技术的演示项目,下面我们将...

    一套基于SpringMVC+velocity框架的web应用 ,基于注解

    在SpringMVC+Velocity的应用中,Sitemesh可以通过简单的配置与这两个框架集成,实现全站页面的统一装饰。 综上所述,这套基于SpringMVC+Velocity的web应用利用了SpringMVC的注解驱动特性,简化了控制器和依赖管理;...

    springMVC+Velocity+iBATIS整合

    在这个"SpringMVC+Velocity+iBATIS的整合小demo"中,可能包含了这些配置文件、Controller类、Service接口及其实现、Mapper接口及其XML配置、Velocity模板文件等。通过这些文件,我们可以看到一个完整的Java Web应用...

    springmvc+velocity

    J2EE开发中velocity获取项目地址,使用框架springmvc+velocity视图器,velocity配置toolboxConfigLocation使.vm文件获取项目资源地址和设置静态资源地址。 此处demo实现效果为:test.vm模板通过调用${ctx.rootPath}...

    springmvc+mybatis+velocity整合实例

    总的来说,"springmvc+mybatis+velocity整合实例"提供了一个轻量级且功能齐全的Web开发基础,适合快速搭建项目。通过这个整合,开发者可以充分利用Spring MVC的控制层优势、MyBatis的数据访问便捷性,以及Velocity的...

    Spring+Hibernate+SpringMVC+Velocity+Maven整合

    Spring+Hibernate+SpringMVC+Velocity+Maven整合

    SpringMVC+ibatis+velocity整合例子

    4. 配置Velocity:在Spring配置文件中添加VelocityViewResolver,指定模板目录和Velocity工具类。 5. 编写Controller:使用SpringMVC的@Controller注解创建控制器类,定义处理HTTP请求的方法,注入Service层的Bean。...

    maven+springmvc+spring+ibatis+velocity+mysql

    在构建企业级Web应用时,"maven+springmvc+spring+ibatis+velocity+mysql"这个组合提供了高效且灵活的开发框架。让我们逐一解析这些技术及其在项目中的作用。 **Maven** 是一个项目管理和综合工具,它帮助开发者...

    SpringMVC+Velocity+Maven整合例子

    5. **编写Velocity模板**:在src/main/resources目录下创建Velocity模板文件,如test.vm,用Velocity语法编写动态内容。 6. **运行项目**:在IDEA等集成开发环境中,配置Maven的生命周期,运行项目。通过浏览器访问...

    Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven实现的通用权限管理系统

    Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统。 Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统 Spring+SpringMVC+...

    完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip

    完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统...

    Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码.zip

    Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+...

    springmvc+mybatis+easyui+velocity开源后台J2EE框架

    J2ee开源模板后台是基于 springmvc+mybatis+easyui+velocity 技术实现的一套模板后台,把一些通用的功能模板化,可以在线打包生成整站源码包括 jsp页面,为开发人员节省时间 ,生成的功能有增删改查,查询包括按列...

    springmvc+velocity+hession+ibatis

    标题 "springmvc+velocity+hession+ibatis" 涉及到的是一个使用Spring MVC、Velocity、Hessian和iBatis构建的Web应用程序。这些技术是Java开发中的关键组件,让我们逐一深入理解它们: 1. **Spring MVC**:Spring ...

    maven+springMVC+mybatis+velocity+mysql+junit 代码生成器

    【标题】"maven+springMVC+mybatis+velocity+mysql+junit 代码生成器" 描述了一个集成开发环境,这个环境结合了多种技术,旨在帮助开发者快速、高效地生成应用程序的基础代码。以下是这些技术及其相关知识点的详细...

    SpringMVC+hibernate+velocity+Annotation

    综合这些技术,"SpringMVC+hibernate+velocity+Annotation"的例子提供了一个完整的Web应用开发基础架构。SpringMVC处理HTTP请求,调用由Hibernate管理的业务逻辑,最后通过Velocity模板生成动态网页。这种架构充分...

    spring+springMVC+mybatis+quartz动态定时任务创建

    在IT行业中,构建高效、可扩展的Web应用是至关重要的,而"spring+springMVC+mybatis+quartz动态定时任务创建"就是一个常见的技术栈,用于实现这样的目标。这个组合充分利用了各组件的优势,提供了强大的后端服务支持...

    Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统.rar

    在上家公司自己集成的一套系统,用了两个多月的时间完成的:Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级开发系统 Springboot作为容器,使用mybatis作为持久层框架 使用官方推荐的thymeleaf做为模板引擎,...

    基于SpringMVC+Spring+MyBatis+Maven项目案例.zip

    基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis...

Global site tag (gtag.js) - Google Analytics