请教Velocity以相对路径方式嵌入动态页面问题

发布于 2021-11-15 00:14:24 字数 1796 浏览 720 评论 3

初学Velocity,想写个VelocityTool类实现以相对路径方式嵌入动态页面,思路大致与http://www.oschina.net/code/snippet_12_694中一样,因为新版中init(Object arg0)方法已经Deprecated了,换用configure(Map props)(见http://velocity.apache.org/tools/devel/upgrading.html最下面和http://velocity.apache.org/tools/devel/creatingtools.html),代码如下:

import java.util.Map;

import org.apache.velocity.VelocityContext;
import org.apache.velocity.tools.view.ViewContext;

public class VelocityTool {

	protected VelocityContext velocity;

	public void configure(Map props) {
		Object obj = props.get("velocityContext");
		if (obj instanceof ViewContext) {
			ViewContext viewContext = (ViewContext) obj;
			velocity = (VelocityContext) viewContext.getVelocityContext();
		}
	}

	public String cur_templete() {
		return velocity.getCurrentTemplateName();
	}

}
我使用的Velocity和VelocityTools的版本都是最新的。

但是运行时出现错误:

Caused by: java.lang.ClassCastException: org.apache.velocity.tools.view.context.ChainedContext cannot be cast to org.apache.velocity.VelocityContext

可见从获得的ViewContext是ChainedContext类型了,不能强制转换为 VelocityContext类型。

我又换了老方法,使用init(Object arg0)方法,Copy红薯的代码来用,也不行,错误是一样的,都是ChainedContext不能强制转换为 VelocityContext。

各位高手,请问有办法解决吗?或者有其他办法可以达到这个目的吗?在使用最新版Velocity和VelocityTool的情况下。


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

回眸一笑 2021-11-17 10:19:26

解决方法:请参考http://blog.csdn.net/wq560/article/details/7622448

孤檠 2021-11-16 19:50:31

很久前的帖子了,当时没找到解决方案,用回旧版了。 现在的就没研究过了~~

猫烠⑼条掵仅有一顆心 2021-11-16 18:56:37

找到解决方法了吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文