【问题标题】:Spark Framework and relative pathSpark 框架和相对路径
【发布时间】:2016-08-29 02:27:14
【问题描述】:

我正在使用Spark framework 创建一个网络应用程序,我一直在浏览他们网站上的教程。目前,我正在处理他们的模板部分,但是我似乎无法让项目识别出我的 css 和模板在我的资源文件夹中。

我正在使用 Netbeans 和 Maven 来管理我的依赖项。

谁能帮我弄清楚如何在这个环境中正确设置我的相对路径/创建我的项目文件夹?我是 Maven 和 Spark 的新手,所以请放轻松。

【问题讨论】:

    标签: java maven netbeans relative-path spark-java


    【解决方案1】:

    静态文件:

    如果您的资源目录如下所示:

    resources
    └───public
        ├───css
        │       style.css
        ├───html
        │       hello.html
        └───templates
                template.ftl
    

    您可以使用staticFiles.location("/public")。这将使 /public 成为根 staticFiles 目录。

    然后您可以像这样访问hello.htmlhttp://{host}:{port}/html/hello.html

    如果您想在文件系统上使用外部位置,可以使用staticFiles.externalLocation(...),其工作方式与上述几乎相同。

    注意:staticFiles.externalLocation(...)可以设置为你项目的资源目录,即自动刷新文件(对开发有用)

    更深入的解释可以在the spark documentation找到

    配置您的模板引擎:

    如果您已经设置了 staticFiles 位置,但 spark 仍然无法找到您的模板,请尝试此操作。

    注意:这些示例适用于 FreeMarker 引擎,尽管它们应该适用于其他引擎,但需要稍作调整。

    查看examples 后,似乎默认情况下,new FreemarkerEngine()spark/template/freemarker 中查找模板,而不是您的 staticFiles 位置。

    你有两个选择:

    1:将所有模板移至该目录

    2:配置自己的引擎,在定义路由时改为传递

    FreeMarkerEngine freemarker = new FreeMarkerEngine();
    Configuration config = new Configuration();
    config.setTemplateLoader(
            new ClassTemplateLoader(YOUR_CLASS.class, "/templatedir"));
    freemarker.setConfiguration(config);
    

    【讨论】:

    • 明天早上我会试一试。我已将其标记为答案,因为它是非常有用的信息!你是对的,我已经为我的模板文件夹设置了 staticFileLocation 。此外,我有一些 CSS 文件试图将我的 HTML 文件指向,但也找不到这些文件,这让我很困惑。至于模板,明天我会给你的代码试一试,让你知道事情的进展!感谢您的回复!
    • 我最终安装了 IntelliJ,由于某种原因,完全相同的代码在 IntelliJ 中运行,而在 Netbeans 中不起作用。哎哟!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 2020-11-05
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多