首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clojure/compojure/hiccup

clojure/compojure/hiccup
EN

Stack Overflow用户
提问于 2011-08-29 00:54:54
回答 1查看 486关注 0票数 3

我拥有的堆栈跟踪不包含对我的代码的任何引用。我不确定如何开始找出这里可能出现的问题:

代码语言:javascript
复制
LazySeq.java:47 clojure.lang.LazySeq.sval
LazySeq.java:56 clojure.lang.LazySeq.seq
Cons.java:39    clojure.lang.Cons.next
RT.java:560 clojure.lang.RT.next
core.clj:61 clojure.core/next
core.clj:461    clojure.core/str$fn[fn]
core.clj:463    clojure.core/str
RestFn.java:140 clojure.lang.RestFn.applyTo
core.clj:540    clojure.core/apply
core.clj:90 hiccup.core/eval460$fn[fn]
MultiFn.java:163    clojure.lang.MultiFn.invoke
Var.java:365    clojure.lang.Var.invoke
stacktrace.clj:26   ring.middleware.stacktrace/html-ex-view
stacktrace.clj:40   ring.middleware.stacktrace/html-ex-response
stacktrace.clj:51   ring.middleware.stacktrace/ex-response
stacktrace.clj:61   ring.middleware.stacktrace/wrap-stacktrace$fn[fn]
reload_modified.clj:15  ring.middleware.reload-modified/wrap-reload-modified$fn[fn]
stacktrace.clj:59   ring.middleware.stacktrace/wrap-stacktrace$fn[fn]
jetty.clj:17    ring.adapter.jetty/proxy-handler$fn[fn]
(Unknown Source)        ring.adapter.jetty.proxy$org.mortbay.jetty.handler.AbstractHandler$0.handle
HandlerWrapper.java:152 org.mortbay.jetty.handler.HandlerWrapper.handle
Server.java:324 org.mortbay.jetty.Server.handle
HttpConnection.java:534 org.mortbay.jetty.HttpConnection.handleRequest
HttpConnection.java:879 org.mortbay.jetty.HttpConnection$RequestHandler.content
HttpParser.java:741 org.mortbay.jetty.HttpParser.parseNext
HttpParser.java:213 org.mortbay.jetty.HttpParser.parseAvailable
HttpConnection.java:403 org.mortbay.jetty.HttpConnection.handle
SocketConnector.java:228    org.mortbay.jetty.bio.SocketConnector$Connection.run
QueuedThreadPool.java:522   org.mortbay.thread.QueuedThreadPool$PoolThread.run

这发生在表单提交之后--控制器将一条记录写入db并重定向到页面:

代码语言:javascript
复制
(defn create-submit [& m]
  (let [p (model/create m)]
      (response/redirect (str "/post/" (:id p)))))

我在堆栈跟踪中看到了卡顿,但这里没有进行页面呈现。而且浏览器仍然指向原始页面,而不是重定向的页面,所以我认为重定向永远不会发生。

想法?

编辑:

通过一些println,我跟踪到了model/create调用,它调用clojureql to conj!新的记录。第一个println显示在控制台窗口中,第二个不显示。

代码语言:javascript
复制
(defn create [m] 
    (let [p (new-post-from m)] 
        (println "about to add p to table " (:id p)) 
        (cql/conj! (cql/table :posts) p)
        (println "after adding p to table")
    p)) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-29 01:30:19

原因是我的路由定义是这样的:

代码语言:javascript
复制
(POST "/post/create/submit" (params :params) (post/create-submit))

我需要将params传递给create-submit调用。因为创建-提交参数的定义是[& m],所以我猜它不会抱怨参数数量错误。

更正:模型/创建方法也抛出了异常,因为我没有添加对db.clj文件的要求,这是我进行cql/open-global调用的地方。

堆栈跟踪完全不明显--我希望它指向cql/conj下的某个位置!在那里它试图建立连接。取而代之的是,它指向了一点意义都没有的呃逆。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7222376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档