【问题标题】:Apache velocity unable to find resourceApache 速度无法找到资源
【发布时间】:2012-09-25 11:53:13
【问题描述】:

我正在尝试使用速度加载模板。我唯一拥有的是文件的路径。但我似乎无法用这个绝对路径加载文件。你需要怎么做?

文档对于阅读绝对模板非常模糊......

我正在尝试在 RCP 程序的插件中使用它

【问题讨论】:

    标签: java apache plugins velocity rcp


    【解决方案1】:

    我认为您最好的选择是查看 Velocity 中的资源加载器概念。这是 Velocity 提供的从任意来源加载模板的方式。有关详细信息,请参阅文档 here

    您可以查看可用的方法以供参考。如果配置正确,有一个FileResourceLoader 可能完全符合您的需要。

    如果这不起作用,您可以从基类 ResourceLoader 派生。然后,您的 ResourceLoader 将简单地从您传递给 getTemplate() 调用的名称映射到实际文件。

    【讨论】:

    • 如果您从 ResourceLoader 类派生,您还可以从不同的文件夹位置加载多个模板吗?
    • 当然,你可以用任何你想要的方式构建加载器,它接收一个字符串并且需要返回相应的InputStream。
    【解决方案2】:

    将您的模板放在插件项目中的文件夹“templates/template1.vt”中,并确保将此文件夹添加到 build.properties 中。您可以尝试通过以下任一方式获取模板文件。

    one:
     URL url= Activator.getDefault().getBundle().getEntry("templates/template1.vt");
     url = FileLocator.toFileURL(url);
     File file = new File(url.toURI());
    
    second:
    url = new URL("platform:/plugin/<plugin id>/templates/template1.vt");
    url = FileLocator.toFileURL(url);
    File file = new File(url.toURI());
    

    【讨论】:

    • 它必须是我插件之外的文件夹!我能做到这一点的唯一方法是当我在velocity中设置Fileloader属性......并让Velocity使用这个路径创建INIT......但是我在不同的位置有多个模板......这是真正的问题:/现在我必须用不同的属性一遍又一遍地初始化我的 Velocity
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 2017-11-29
    • 2020-01-17
    相关资源
    最近更新 更多