我希望能够处理使用动态数量的表单字段的表单
e.g。
(form :action "/theaction"
:method "post"
(input :type "text" :name "firstinput") (:br)
(dotimes (i n)
(:input :type "text" :name (FORMAT nil "INPUT~a" i)))
(:input :type "submit" :value "submit" :name "submit"))
如何定义处理程序,因为&rest
不被接受,并且不允许我访问我显然需要进一步处理的变量名。
(define-easy-handler (theaction :uri "/theaction") (&special-rest all-params)
(log-message* :INFO "~a" all-params))
-> "(("firstinput" . "value") ("INPUT0" . "value") ("INPUT1" . "value") ...)"
一种可能性是预先定义所有变量,例如: 100,但这似乎相当麻烦和不直观。
答案 0 :(得分:3)
define-easy-handler
的lambda列表只是使用较低级别调用的快捷方式。您可以使用GET-PARAMETER
和POST-PARAMETER
等功能获得更广泛的参数访问权限。您可以在处理程序正文中使用get-parameters*(或post-parameters*)来获取所有参数的列表。