Compojure 绑定来自 URL 的 HTTP 请求参数,但不绑定来自 POST 表单的 HTTP 请求参数
Compojure 不绑定 POST 表单中的字段。这是我的路线定义:
(defroutes main-routes
(POST "/query" {params :params}
(debug (str "|" params "|"))
"OK...")
)
当我发布包含字段的表单时,我得到 |{}|,即没有参数。顺便说一句,当我去 http://localhost/query?param1=value1 时,params 不为空,并且这些值会打印在服务器控制台上。
表单字段还有其他绑定吗?
Compojure does not bind the fields in a POST form. This is my route def:
(defroutes main-routes
(POST "/query" {params :params}
(debug (str "|" params "|"))
"OK...")
)
When I post a form with fields in it, I get |{}|, i.e. there are no parameters. Incidentally, when I go http://localhost/query?param1=value1, params is not empty, and the values get printed on the server console.
Is there another binding for form fields??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
确保您的输入字段具有 name="zzz" 属性,但不仅仅是 id="zzz"。
html 表单收集所有输入并使用名称属性
my_post.html
my_routes.clj
发布它们,产生如下响应
ensure you have input fields with name="zzz" attribute, but not only id="zzz".
html form collects all inputs and posts them using the name attribute
my_post.html
my_routes.clj
produce response like
这是如何处理参数的一个很好的示例
https://github.com/heow/compojure-cookies -example
请参见示例 2 - 中间件是功能
This is a great example of how to handle parameters
https://github.com/heow/compojure-cookies-example
See under Example 2 - Middleware is Features
笔记:
(params "id") 对我返回 nil,我使用 (params :id) 得到正确的值
note:
(params "id") return nil for me, i get a correct value with (params :id)