0

clojure - 1.5.1、compojure - 1.1.5、clostache - 1.3.1 を使用しています。

テンプレート ファイルは、resources/public/templates フォルダーの下にあります。

コード :

(:require [clostache.parser :as cp])

(cp/render-resource "templates/connectionDetails.mustache" {:jmsConnectionName "Michael" :rest-conn-names ["a" "b"]}))

Clostache の render-resource への呼び出しは、以下の Exception をスローしています:

Exception: java.lang.IllegalArgumentException: No implementation of method: :make-reader of protocol: #'clojure.java.io/IOFactory found for class: nil
                  core_deftype.clj:541 clojure.core/-cache-protocol-fn
                             io.clj:73 clojure.java.io/fn[fn]
                            io.clj:106 clojure.java.io/reader
                       RestFn.java:410 clojure.lang.RestFn.invoke
                          AFn.java:161 clojure.lang.AFn.applyToHelper
                       RestFn.java:132 clojure.lang.RestFn.applyTo
                          core.clj:619 clojure.core/apply
                         core.clj:6278 clojure.core/slurp
                       RestFn.java:410 clojure.lang.RestFn.invoke
                        parser.clj:396 clostache.parser/render-resource
4

2 に答える 2

1

テンプレートは、ソース フォルダーの下に配置する必要があります。あなたの場合、それは次のようになります:

src
|
- templates
  |
  - connectionDetails.mustache

public フォルダーは、Web アプリケーション クライアントから取得した HTML リソース (CSS、画像、Javascript など) に使用されます。

Clostache は必要なファイルを見つけるためにクラスパス (つまり src フォルダー) を調べています。

于 2013-10-05T15:13:46.997 に答える
1

パスが正しくないように見えるため、リソースが見つからない可能性があります。resourcesがクラスパスに追加されるため、テンプレートにアクセスするには、使用する必要があります(アプリケーションから直接公開しない場合"public/templates/connectionDetails.mustache"、テンプレートを下に置いても意味がない場合があります)。public

于 2013-10-05T10:53:33.680 に答える