Spark-Java静态文件位置问题

时间:2016-09-16 14:26:36

标签: java intellij-idea template-engine static-files spark-java

我在main方法之前调用了staticfiles.location(“/ public”),在任何其他spark方法之前,由于某种原因,静态文件目录下只有一个目录正在使用缩短的路径。我的模板目录“public / templates”中的文件必须使用“/public/templates/foo.vtl”调用,但我的CSS目录中的文件“public / css”可以使用“/css/bar.css”调用

我可以注意到的一点是,css文件的缩写路径最初位于我的.java文件中,但现在位于我的一个模板文件中。它仍然可以从模板文件中运行。为什么我的公共文件夹下没有识别我的模板文件夹,但是我的css文件夹是?

我正在为这个项目使用IntelliJ的想法。

这是我的代码,虽然它几乎与Spark网站上的布局教程代码相同。几周前我和Netbeans有类似的问题,切换IDE似乎解决了这个问题。这可能是我的IDE没有更新某种资源文件的问题吗?我很难过!这不是一个大问题,但我宁愿知道为什么它不起作用而不是继续保持无知。

    public static void main(String[] args) {
    staticFiles.location("/public");
    String layout = "public/templates/layout.vtl";
    //secure("public/keystore.jks", "password", null, null);

    get("/", (req, res) -> {
        HashMap model = new HashMap();
        model.put("template", "public/templates/main.vtl");
        return new ModelAndView(model, layout);
    }, new VelocityTemplateEngine());

    get("/page2", (req, res) -> {
        HashMap model = new HashMap();
        model.put("template", "public/templates/main2.vtl");
        return new ModelAndView(model, layout);
    }, new VelocityTemplateEngine());

这是我的文件夹结构的图像,以防上面的文字混乱没有多大意义:

enter image description here

编辑:每个请求,以下是我的目标目录的内容。

enter image description here

1 个答案:

答案 0 :(得分:1)

  

您必须使用" templates /" 代替" public / templates /"

由于您指定的位置被解释为" public / public / templates" ,并且它不存在于您的目标目录下。

创建 ModelAndView(model,templatePath)时,您从布局变量中指定了错误的值(" public / templates / layout.vtl")。您必须为每个模板设置路径。如下例所示。

enter image description here