Velocity 模板加载方式如何拓展

王威 发布于 2011/06/30 16:13
阅读 1K+
收藏 0

个人了解 velocity 提供文件,类路径和jar三种模板加载方式。

现在有个需求是这样的: 要对外提供一个 servlet   ,别人提供两个参数:一个是数据,另一个是template  但是都是以url的形式给我  我怎么通过url 去加载模板  去得数据呢?

不能 把模板写成本机文件 然后再加载吧

请各位大侠 指点啊

加载中
0
红薯
红薯
可以自行实现一个 ResourceLoader ,然后怎么加载就看你自己了
王威
王威
我看api里面有个 org.apache.velocity.runtime.resource.loader.URLResourceLoader 这个可以加载根据url得到的模板么? 如果可以,配置文件的Velocity.RESOURCE_LOADER 应该写什么? 还有如果自己实现ResourceLoader的时候 Velocity.RESOURCE_LOADER 又怎么写呢?
0
红薯
红薯
配置写法:resource.loader = Loader类名
王威
王威
我用API里那个 : Properties properties = new Properties(); properties.setProperty(Velocity.ENCODING_DEFAULT, "UTF-8"); properties.setProperty(Velocity.INPUT_ENCODING, "UTF-8"); properties.setProperty(Velocity.OUTPUT_ENCODING, "UTF-8"); properties.setProperty(Velocity.RESOURCE_LOADER, "URLResourceLoader"); properties.setProperty("URLResourceLoader.resource.loader.class", "org.apache.velocity.runtime.resource.loader.URLResourceLoader"); Velocity.init(P); Template t = Velocity.getTemplate("http://9.186.105.82:8080/velocityDemo/test.vm"); StringWriter sw = new StringWriter(); VelocityContext vc = new VelocityContext(); t.merge(vc, sw); 报道错还是找不到: SEVERE: ResourceManager : unable to find resource 'http://9.186.105.82:8080/velocityDemo/test.vm' in any resource loader. Exception in thread "main" org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'http://9.186.105.82:8080/velocityDemo/test.vm'
王威
王威
API提供的那个urlloader 能用么?我试了下 好像不行哈
0
王威
王威
多谢红薯大哥,问题已经解决。api里的那个 URLResourceLoader可以试用,之所以不行是因为少配置了属性***.resource.loader.root  这个属性。 这个属性还支持数组 ,也就是说 可以配置多个站点的ip:端口/appname/  这点还是很强大。 有一点不好的是 如果不配置的话 就会报错。配置成“”  如 ***.resource.loader.root=“”;这样在getTemplate(“http://....”)是没有问题滴。我看了源码 Engine要是对这种没有配置的属性做个容错就好啦
返回顶部
顶部