2013-10-05 8 views
0

clojure - 1.5.1, compojure - 1.1.5, clostache - 1.3을 사용하고 있습니다. .1.Clojure Clostache 오류 - 프로토콜 구현 방법 없음 : : 'clojure.java.io/IOFactory for class : nil

템플릿 파일은 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 

답변

1

자원 아마 찾을 수 없습니다. resources이 클래스 경로에 추가되므로 템플릿에 액세스하려면 "public/templates/connectionDetails.mustache"을 사용해야합니다 (응용 프로그램에서 직접 템플릿을 노출하지 않는 경우 템플릿을 public 아래에 두는 것이 좋지 않을 수 있음).

+0

감사합니다 ponzao :). 내 나쁜, 예, 그게 다야! –

1

서식 파일은 원본 폴더 아래에 있어야합니다. 귀하의 경우에는 은은 다음과 같습니다

src 
| 
- templates 
    | 
    - connectionDetails.mustache 

공용 폴더는 웹 응용 프로그램 클라이언트에서 가져온 HTML 자원, 즉, CSS, 이미지, Javascript를 등에 사용되는 ...

Clostache는 클래스 패스에서 찾고있다 (예 : src 폴더)를 사용하여 필요한 파일을 찾습니다.