把应用打成war包发布在Weblogic上时出现找不到velocity模板,异常:Unable to find resource '/template/simple/hidden.vm' (以目录方式发布到Weblogic上,不存在此问题)
经过排查,问题出现在资源的加载方式上,解决问题的方法是,为应用增加加载资源的方法,webwork已经提供了一个在classpath加载资源的类WebWorkResourceLoader (该类继承了velocity提供的ClasspathResourceLoader),因此只需要在velocity的配置文件中修改配置。
#默认的设置
#resource.loader = file
#file.resource.loader.description = Velocity File Resource Loader
#file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader
#file.resource.loader.path = .
#file.resource.loader.cache = false
#file.resource.loader.modificationCheckInterval = 2
#修改完的
resource.loader = class
class.resource.loader.class = com.opensymphony.webwork.views.velocity.WebWorkResourceLoader
默认情况下,webwork会加载类路径下的velocity.properties,当然velocity.properties的路径也可以自定义,只需要在webwork.properties的webwork.velocity.configfile属性中配置
### Location of velocity.properties file. defaults to velocity.properties
#webwork.velocity.configfile = velocity.properties
测试时发现配置完的velocity.properties并没有被加载,查看源代码发现原因是出在webwork的实现上,同时webwork也支持自定义的扩展,因此我们可以扩展webwork的实现。如:自定义类MyVelocityManager继承VelocityManager.
public class MyVelocityManager extends VelocityManager {
private static final Log log = LogFactory.getLog(EcsSalesVelocityManager.class);
private String configfile = "velocity.properties";
@Override
public Properties loadConfiguration(ServletContext context) {
Properties properties = super.loadConfiguration(context);
if (Configuration.isSet("webwork.velocity.configfile")) {
configfile = Configuration.getString("webwork.velocity.configfile");
}
configfile = configfile.trim();
InputStream inStream = Thread.currentThread().getContextClassLoader()
.getResourceAsStream(configfile);
try {
properties.load(inStream);
}
catch (IOException e) {
log.warn("Unable to load velocity configuration file '" + configfile + "'", e);
}
return properties;
}
}
我们需要在webwork.properties中自定义该类的路径
#扩展的VelocityManager
webwork.velocity.manager.classname = com.opensymphony.webwork.views.velocity.ext.MyVelocityManager
分享到:
相关推荐
Velocity模板语言(Velocity Template Language,简称VTL)是Apache软件基金会的Velocity项目中的一部分,它是一种用于生成动态网页内容的模板引擎。Velocity以其简洁、易读的语法,为Java开发者提供了一种高效的...
Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎
Velocity模板技术语法详细介绍,包括很详细的示例代码 1.变量………………………………………………………………………………1 2.循环………………………………………………………………………………2 3.条件语句...
Velocity模板实例 Velocity模板实例 Velocity模板实例 Velocity模板实例
** Velocity模板语言简介** Velocity是Apache软件基金会的一个开源项目,它是一种基于Java的模板引擎,用于将HTML、XML等静态页面与动态数据分离,使得开发者能够专注于业务逻辑,而设计师可以专注于页面布局和样式...
Velocity 模板使用指南中文版 Velocity 是一种流行的模板引擎,广泛应用于Java 和 .Net 平台。它提供了一个灵活、可扩展的模板语言,能够根据需要生成动态内容。本文档是 Velocity 模板使用指南中文版,旨在帮助...
SpringBoot集成Velocity代码生成模板是现代Java开发中的一个重要工具,它极大地提高了开发效率,尤其是在处理大量数据表映射到业务层代码时。Spring Boot作为一款轻量级的框架,简化了初始化和配置过程,而Velocity...
在使用Velocity时,首先需要在项目中引入这两个jar包,然后配置Velocity的上下文(Context),将Java对象放入其中,这些对象的属性可以在VM模板中通过$符号访问。接下来,通过Velocity引擎解析和渲染模板,生成最终...
通过以上讲解,我们可以看到Velocity模板解析是一种强大的工具,它使得开发者能够在不干扰HTML结构的情况下轻松地插入动态内容。结合MVC模式,Velocity能够有效地提高Web应用的开发效率和代码的可维护性。在实际项目...
** Velocity模板应用详解 ** Velocity是一款强大的Java模板引擎,它为开发者提供了一种与呈现逻辑分离的方式,使得HTML、XML或者其他格式的文档可以更清晰地与业务逻辑代码分开。Velocity被广泛应用于Web应用开发,...
Velocity 是一款开源的模板引擎,它为 Java 应用程序提供了灵活的模板处理能力,尤其适用于分离应用程序的表示层逻辑和业务逻辑。Velocity 提供了一种简单的模板语言(Velocity Template Language,VTL),使得非...
本项目主要探讨的是如何将SpringBoot与Mybatis、Velocity模板引擎进行整合,以便更高效地展示和处理数据。 首先,让我们深入了解SpringBoot的核心特性。SpringBoot的设计理念是“约定优于配置”,它内置了Tomcat...
### Velocity模板语言介绍 #### 一、Velocity简介 Velocity是一种基于Java的模板引擎(template engine),它使得非技术背景的人员能够轻松地使用一种简洁的模板语言来引用由Java代码所定义的对象。这种特性使得...
5. **使用Velocity模板**:创建Velocity模板文件(如`templates/email.vm`),然后在服务类中使用VelocityContext填充数据,并通过VelocityEngine渲染模板。 ```java // EmailService.java public void sendEmail...
模板路径的设置直接影响到模板的加载和解析,从而影响到最终的输出结果。 1. **模板路径的配置** - 在 Velocity 中,模板路径通常在初始化 Velocity Engine 时通过 `Properties` 对象进行配置。例如: ```java ...
Velocity.js 是velocity模板语法的javascript实现。Velocity 是基于Java的模板引擎,广泛应用在阿里集 体各个子公司。Velocity模板适用于大量模板使用的场景,支持复杂的逻辑运算,包含 基本数据类型、变量赋值和...
`eclipse相关插件`,虽然不是必需的jar包,但对于使用Eclipse作为IDE的开发者来说,可能需要安装Velocity支持的Eclipse插件,如Velocity视图插件,它能提供模板语法高亮和代码完成等功能,提高开发效率。 为了正确...