0

Spark を実行する次の単純なメイン クラスがあります。

    Spark.port(4570);       
    final Configuration configuration = new Configuration(new Version(2, 3, 0));
    configuration.setClassForTemplateLoading(SparkHandler.class, "/");

    Spark.staticFileLocation("/public");

    Spark.get("/", (request, response) -> {

        // read patterns

        // attributes for web-interface.
        Map<String, Object> attributes = new HashMap<>();
        attributes.put("data", "someData");

        return new ModelAndView(attributes, "timeline.ftl");
    } , new FreeMarkerEngine());

すべてうまくいきます。http://localhost:4570/にアクセスすると、要求された Web ページが表示されました。

get ステートメントのパスを次のように変更しますが/a/b/c、まったく同じコードを実行します。

    Spark.port(4570);   
    final Configuration configuration = new Configuration(new Version(2, 3, 0));
    configuration.setClassForTemplateLoading(SparkHandler.class, "/");

    Spark.staticFileLocation("/public");

    Spark.get("/a/b/c", (request, response) -> {

        // read patterns

        // attributes for web-interface.
        Map<String, Object> attributes = new HashMap<>();
        attributes.put("data", "someData");

        return new ModelAndView(attributes, "timeline.ftl");
    } , new FreeMarkerEngine());

たとえばhttp://localhost:4570/a/b/cにアクセスすると、以前は見つかっていた多くのリソースが利用できなくなったというメッセージが返されます。例えば

INFO 28/07/16 14:45:03: 要求されたルート [/a/b/vis/vis.js] が Spark にマップされていません

ただし、これは正確には /public/vis/vis.js の場所にあります。

その get コマンドは私の静的ディレクトリを変更しますか? それとも、私が理解できない何かがここで起こっています:)。

4

1 に答える 1

1

答えが見つかりました!

私のfreemarker/htmlファイルでは、たとえば次のような相対部分を使用しました

<script src="./vis/vis.js"></script>

それらを絶対パスに変更すると、問題が解決します。

<script src="/vis/vis.js"></script>

ばかげた質問で申し訳ありませんが、他の人に役立つかもしれません。

于 2016-07-28T05:06:38.667 に答える