Почему я получаю сообщение java.lang.Boolean, которое невозможно привести к ошибке clojure.lang.IFn при проверке полей в Clojure?
Это функция проверки, vali
является noir.validation
:
(defn valid? [name description]
(vali/rule (vali/has-value? name)
[:name "Name is nil"])
(vali/rule (vali/has-value? description)
[:description "Description is nil"])
(not (vali/errors? :name :description)))
Когда я вызываю эту функцию, я получаю исключение
(defn film-new [name description]
(if (valid? name description)
(try
(datab/filmnew name description)
(resp/redirect "/film")
(catch Exception e
(do (println "exception")
(view/film-form "error" (datab/states)))))
(print "else")))
Я не думаю, что я использовал двойные скобки, так почему я получаю ошибку? Новая функция фильма прекрасно работает без части if, она сохраняет данные фильма. Трассировка стека:
handler.clj:42 primer3.handler/valid?
handler.clj:35 primer3.handler/valid?
handler.clj:55 primer3.handler/film-new
handler.clj:54 primer3.handler/film-new
handler.clj:98 primer3.handler/fn
handler.clj:98 primer3.handler/fn
core.clj:135 compojure.core/make-route[fn]
core.clj:122 compojure.core/wrap-route-middleware[fn]
core.clj:126 compojure.core/wrap-route-info[fn]
core.clj:45 compojure.core/if-route[fn]
core.clj:27 compojure.core/if-method[fn]
core.clj:151 compojure.core/routing[fn]
core.clj:2592 clojure.core/some
core.clj:2583 clojure.core/some
core.clj:151 compojure.core/routing
core.clj:148 compojure.core/routing
RestFn.java:139 clojure.lang.RestFn.applyTo
core.clj:648 clojure.core/apply
core.clj:641 clojure.core/apply
core.clj:156 compojure.core/routes[fn]
core.clj:151 compojure.core/routing[fn]
core.clj:2592 clojure.core/some
core.clj:2583 clojure.core/some
core.clj:151 compojure.core/routing
core.clj:148 compojure.core/routing
RestFn.java:139 clojure.lang.RestFn.applyTo
core.clj:648 clojure.core/apply
core.clj:641 clojure.core/apply
core.clj:156 compojure.core/routes[fn]
middleware.clj:39 noir.util.middleware/wrap-request-map[fn]
keyword_params.clj:35 ring.middleware.keyword-params/wrap-keyword-
params[fn]
nested_params.clj:86 ring.middleware.nested-params/wrap-nested-
params[fn]
multipart_params.clj:133 ring.middleware.multipart-params/wrap-
multipart-params[fn]
params.clj:64 ring.middleware.params/wrap-params[fn]
cookies.clj:161 ring.middleware.cookies/wrap-cookies[fn]
absolute_redirects.clj:38 ring.middleware.absolute-redirects/wrap-absolute-redirects[fn]
resource.clj:28 ring.middleware.resource/wrap-resource[fn]
content_type.clj:30 ring.middleware.content-type/wrap-content-type[fn]
default_charset.clj:26 ring.middleware.default-charset/wrap-default-charset[fn]
not_modified.clj:52 ring.middleware.not-modified/wrap-not-modified[fn]
x_headers.clj:71 ring.middleware.x-headers/wrap-xss-protection[fn]
x_headers.clj:38 ring.middleware.x-headers/wrap-frame-options[fn]
x_headers.clj:53 ring.middleware.x-headers/wrap-content-type-options[fn]
middleware.clj:12 hiccup.middleware/wrap-base-url[fn]
validation.clj:155 noir.validation/wrap-noir-validation[fn]
cookies.clj:72 noir.cookies/noir-cookies[fn]
cookies.clj:161 ring.middleware.cookies/wrap-cookies[fn]
session.clj:158 noir.session/noir-flash[fn]
flash.clj:35 ring.middleware.flash/wrap-flash[fn]
session.clj:109 noir.session/noir-session[fn]
session.clj:103 ring.middleware.session/wrap-session[fn]
Var.java:379 clojure.lang.Var.invoke
reload.clj:22 ring.middleware.reload/wrap-reload[fn]
stacktrace.clj:23 ring.middleware.stacktrace/wrap-stacktrace-log[fn]
stacktrace.clj:86 ring.middleware.stacktrace/wrap-stacktrace-web[fn]
jetty.clj:20 ring.adapter.jetty/proxy-handler[fn]
(Unknown Source)