Ошибка Clojure Clostache — нет реализации метода: :make-reader протокола: #'clojure.java.io/IOFactory для класса: nil

Использую 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

person Binita Bharati    schedule 05.10.2013    source источник


Ответы (2)


Ресурс, вероятно, не найден, потому что ваш путь кажется неверным. resources добавляется в путь к классам, поэтому для доступа к вашему шаблону вы должны использовать "public/templates/connectionDetails.mustache" (может не иметь смысла иметь шаблоны под public, если вы не предоставляете их непосредственно из своего приложения).

person ponzao    schedule 05.10.2013
comment
Спасибо понзао :) . Моя беда, да, это было так! - person Binita Bharati; 07.10.2013

Ваши шаблоны должны находиться в исходной папке. В вашем случае это будет:

src
|
- templates
  |
  - connectionDetails.mustache

Общая папка используется для ресурсов HTML, извлеченных из клиента веб-приложения, т. е. CSS, изображений, Javascript и т. д.

Clostache просматривает ваш путь к классам (то есть папку src), чтобы найти нужные файлы.

person Nicolas Modrzyk    schedule 05.10.2013