Velocity笔记--使用Velocity获取动态Web项目名的问题
以前使用jsp开发的时候,可以通过request很轻松的获取到根项目名,现在换到使用velocity渲染视图,因为已经不依赖servlet,request等一些类的环境,而Web项目的根项目名又不是写死的,需要动态获取,这时候该怎么办呢,试了网上说了很多种方式,总结一下心得.
第一种:(失败)
在toolbox.xml里配置以下信息:
<toolbox scope="request">
<tool key="link" class="org.apache.velocity.tools.view.LinkTool"/>
</toolbox>然后在.vm里直接引用$link.contextPath
我依照这种方式配置完成,启动浏览器打开项目的时候,页面什么都刷不出来,按道理说如果它读不到LinkTool的话,也应该在页面中直接输出$link.contextPath的呀,然后我在vm中去掉$link.contextPath,重新部署就可以刷出来页面,我猜测可能是在读toolbox.xml类的时候出了问题,然后在toolbox.xml中加入了一个自己写的工具类测试:
<tool><key>MyUtil</key><class>com.ximalaya.shop.api.util.MyUtil</class><scope>application</scope></tool>
MyUtil类中有一个最简单的静态方法getMessage(),返回"test",然后我在vm中使用$MyUtil.message,测试.浏览器页面成功返回test...看来不是读取toolbox.xml的问题,debug了一下的确能进到LinkTool方法里,但是值总是为空,鼓捣了半天没有解决,第一种方法,失败!
第二种:(成功)
在spring配置文件的配viewResolver的地方添加一个参数:
<!--配置试图解析器--><bean id="viewResolver"class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"><property name="cache" value="false"/><property name="prefix" value=""/><property name="suffix" value=".vm"/><property name="requestContextAttribute" value="rc"/><property name="contentType" value="text/html;charset=utf-8"/><property name="toolboxConfigLocation" value="/WEB-INF/toolbox.xml"/><property name="exposeSpringMacroHelpers" value="true"/><property name="exposeRequestAttributes" value="true"/><property name="exposeSessionAttributes" value="true"/><property name="allowSessionOverride" value="true"/><property name="allowRequestOverride" value="true"/></bean>
在vm文件中,直接使用$rc.contextPath可获得项目名.
"requestContextAttribute" 把Spring的RequestContext对象暴露为变量rc。利用$rc.contextPath来获取应用程序的contextPath(也 就是/MyUsers);利用${rc.getMessage("user.name")}读取/WEB- INF/classes/messages.properties本地化信息。此对象对于那些不访问serlvet请求的View技术(也就是 Velocity和FreeMarker模板)来说是必不可少的。
Velocity笔记--使用Velocity获取动态Web项目名的问题相关推荐
- eclipse tomcat新建一个_Javaweb07-Eclipse自动创建动态web项目
学习笔记是参考的how2j 使用Eclipse创建Dynamic Web Project 前面的web项目都是通过手动创建的,现在使用eclipse EE自动创建动态web项目,熟悉一下创建流程,仍旧 ...
- eclipse中动态web项目快捷方式设置
需求 在eclipse中发布一个动态web项目,为了快捷创建一些包.类等,需要先设置一下快捷方式. 步骤 1.点击"Window"->"Perspective&qu ...
- java 创建web项目_java – Eclipse:以编程方式创建动态Web项目
我尝试通过首先通过IProject创建 java项目然后使用IFacetedProject将其转换为动态Web项目来创建动态Web项目,但是只创建了静态项目-这是我已经完成的代码-请帮助我这--谢谢. ...
- 用eclipse创建动态web项目手动生成web.xml方法
转载自 用eclipse创建动态web项目手动生成web.xml方法 今天在学习JSP时先创建了一个web项目,后来在用到web.xml文件时,才发现项目创建时更本就没有自动创建web.xml文件 ...
- spring mvc学习(3):建立第一个动态web项目
intellij idea创建第一个动态web项目 我以2018版的intellij idea为例 一.创建JavaWeb 1.第一步 点击左上角的File-->New-->Project ...
- Servlet 动态Web项目-eclipse中,添加新servlet选择Tomcat无法下一步、无法启动Tomcat
现象 解决办法 定位到 E:\project\.metadata\.plugins\org.eclipse.core.runtime\.settings 删除: org.eclipse.wst.ser ...
- intellij idea 创建动态web项目
intellij idea这个开发工具功能强大,但是大部分人都习惯eclipse 开发,所以对这个工具还不是太了解. 今天就给大家分享一下自己使用intellij idea创建一个动态web项目的经验 ...
- Eclipse中的静态和动态web项目
在Eclipse中奖web项目分为了Dynamic Web Project和Static Web Project.那么这两种有什么区别呢?其实这里的Dynamic和Static是通过页面来区分的.创建 ...
- 在eclipse上使用Maven创建动态web项目
在eclipse上使用Maven创建web工程和使用Maven创建普通Java工程一样,不过在Packaging一栏选择"war",这个过程具体就不多说了,详情见我上一篇文章. 我 ...
最新文章
- 一个锁等待现象的诊断案例
- jquery全选/取消全选(反选)/单选操作
- 全国计算机技术与软件专业技术资格(水平)考试【软件评测师】-考试内容总结(四)中间件基础知识...
- hydra图形化工具下载_Hydra for Mac 4.0.4 专业的摄影图像工具
- windows安装Python+tensorflow机器学习开发环境搭建
- 如何在WPF中调用Winform控件
- Session为null 问题
- dos命令操作mysql数据库的常用语句
- 过滤器 拦截器 区别
- php 中断输出,PHP捕捉异常中断的方法
- grafana的+按钮_基于 Prometheus、Grafana 的 EMQ X 物联网 MQTT 服务器可视化运维监控...
- __setattr__,__getattr__,__getattribute__
- 2021-2025年中国抽屉加热器行业市场供需与战略研究报告
- UltraISO 创建的虚拟光驱更改盘符
- 源码推荐:多图无缝滚动控件,多视图控制器间切换
- node卸载_08187.1.1如何卸载CDP
- python量化投资推荐书籍_有没有值得推荐的介绍有名的量化投资策略的书籍?
- 台式计算机M丅BF是什么,台式机主板的 BIOS ID 代码
- 为什么要做售后五星服务认证?
- 二叉树遍历的非递归实现