compojure 0.6.0: проблема с получением аргументов поста с помощью Google App Engine - PullRequest
1 голос
/ 17 февраля 2011

Вот как я определяю свое приложение:

(defroutes index
   (GET "/" [] (main-page))
   (GET "/form" [] (render-page "Vote" (render-form)))
   (POST "/vote" {params :params} (post-vote params))
   (route/not-found "Page not found"))

(def app (site index))

(defservice app)

Сайт используется для захвата: params, который является новым в compojure 0.6.0. Однако я получаю пустую карту после голосования. Интересно, что не так с приведенным выше кодом?

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Если вы используете это на движке приложений Google, я не думаю, что вы можете использовать удобную функцию (site), поскольку она включает функцию ring (wrap-multipart-params), которая использует класс java, не разрешенный Google.

Если вы не загружаете файл из формы, возможно, вам не нужны multipart-params. Попробуйте удалить compojure.handler из своего пространства имен и заменить свое (def app (индекс сайта)) на что-то вроде:

(def app
     (-> index
     (wrap-keyword-params)
     (wrap-nested-params)
     (wrap-params)))

Cheers, Colin

0 голосов
/ 17 февраля 2011

как я ответил в списке рассылки, пожалуйста, убедитесь, что ваша форма действительно отправляет параметры (элементы управления вводом в html-форме должны иметь атрибут name = "...")

...