【发布时间】:2014-09-11 10:14:42
【问题描述】:
我想我在这里有一个相当简单的问题。但我一直在看这个屏幕太久了。所以我正在尝试(但失败)让有状态的会话在 Compojure 中工作。 refheap 代码粘贴 is here。
您可以看到我尝试使用lib-noir(第 62 行)来初始化有状态会话。然后当应用程序运行时,我尝试调用会话中的session/put! 一些数据(第 43 行)。
现在,这个堆栈跟踪表明在 session.put! 中,lib-noir 正在尝试换出尚未绑定的会话变量。现在,我想我是在第 62 行做的。所以我确信这是一个简单的修复,另一组眼睛会看到。
java.lang.ClassCastException: clojure.lang.Var$Unbound 不能转换为 clojure.lang.Atom
在 clojure.core$swap_BANG_.invoke(core.clj:2110)
在 noir.session$put_BANG_.invoke(session.clj:18)
在 bkell.http.handler$fn__6159.invoke(handler.clj:156)
在 compojure.core$make_route$fn__3800.invoke(core.clj:93)
在 compojure.core$if_route$fn__3784.invoke(core.clj:39)
在 compojure.core$if_method$fn__3777.invoke(core.clj:24)
在 compojure.core$routing$fn__3806.invoke(core.clj:106)
在 clojure.core$some.invoke(core.clj:2390)
在 compojure.core$routing.doInvoke(core.clj:106)
在 clojure.lang.RestFn.applyTo(RestFn.java:139)
...
在 java.lang.Thread.run(Thread.java:619)
谢谢
【问题讨论】:
-
你有没有找到解决这个问题的方法?我一直面临同样的问题并开始了一个线程,但也没有得到任何回复。
标签: web-applications clojure compojure noir