1

これは私が自分のアプリを定義する方法です:

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

ここのサイトは、compojure 0.6.0 で新しく追加された :params をキャプチャするために使用されます。ただし、投票後に空のマップが表示されます。上記のコードの何が問題なのだろうか?

4

2 に答える 2

2

これをGoogle App Engineで実行している場合、Googleで許可されていないJavaクラスを使用するリングの(wrap-multipart-params)関数が含まれているため、(サイト)便利な関数を使用できないと思います。

フォームからファイルをアップロードしない限り、おそらく multipart-params は必要ありません。名前空間から compojure.handler を削除し、(def app (site index)) を次のように置き換えてみてください。

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

乾杯、コリン

于 2011-02-17T08:56:27.580 に答える
0

メーリングリストで返信したように、フォームが実際にパラメーターを送信していることを確認してください (html フォームの入力コントロールには name="..." 属性が必要です)。

于 2011-02-17T08:31:50.977 に答える