Почему я получаю сообщение java.lang.Boolean, которое невозможно привести к ошибке clojure.lang.IFn при проверке полей в Clojure? - PullRequest
0 голосов
/ 16 сентября 2018

Это функция проверки, 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) 
...