gpt4 book ai didi

clojure/compojure/hiccup NullPointerException

转载 作者:行者123 更新时间:2023-12-02 20:56:51 25 4
gpt4 key购买 nike

我的堆栈跟踪不包含对我的代码的任何引用。我不知道如何开始找出这里可能出了什么问题:

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

这发生在表单提交之后 - Controller 将记录写入数据库并重定向到页面:

(defn create-submit [& m]
(let [p (model/create m)]
(response/redirect (str "/post/" (:id p)))))

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

想法?

编辑:

通过一些 println,我将其追踪到模型/创建调用,该调用正在调用 clojureql 来 conj!新纪录。第一个 println 显示在控制台窗口中,而第二个则没有。

(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))

最佳答案

原因是我的路线定义看起来像这样:

(POST "/post/create/submit" (params :params) (post/create-submit))

我需要将参数传递给创建提交​​调用。因为创建提交参数的定义是 [& m] 我猜它并没有提示参数数量错误。

更正:而且 model/create 方法也会抛出异常,因为我没有添加对 db.clj 文件的需求,这是我进行 cql/open-global 调用的地方。

堆栈跟踪完全不明显——我希望它指向 cql/conj 下的某个位置!它试图建立连接的地方。相反,它指向打嗝,这根本没有意义。

关于clojure/compojure/hiccup NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7222376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com