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 的渲染资源的调用抛出以下异常:

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

公共文件夹用于从 Web 应用程序客户端提取的 HTML 资源,即 CSS、图像、Javascripts 等...

Clostache 正在查看您的类路径(即 src 文件夹)以查找它需要的文件。

于 2013-10-05T15:13:46.997 回答
1

可能找不到资源,因为您的路径似乎不正确。resources被添加到类路径中,以便访问您应该使用的模板(如果您不直接从应用程序中公开它们,那么"public/templates/connectionDetails.mustache"将模板放在下面可能没有意义)。public

于 2013-10-05T10:53:33.680 回答