使用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: 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
答案 0 :(得分:1)
可能找不到资源,因为您的路径似乎不正确。 resources
已添加到类路径中,因此要访问您应使用"public/templates/connectionDetails.mustache"
的模板(如果您不直接从应用程序公开它们,那么将模板置于public
下可能没有意义) 。
答案 1 :(得分:1)
您的模板应位于源文件夹下。 在你的情况下:
src
|
- templates
|
- connectionDetails.mustache
公用文件夹用于从Web应用程序客户端提取的HTML资源,即CSS,Images,Javascripts等......
Clostache正在查看您的类路径(即src文件夹)以查找所需的文件。