我不确定这是我使用cl-who
(特别是with-html-output-to-string
and with-html-output
)的问题还是我对 Common Lisp 的理解的问题(因为这是我使用 Lisp 的第一个项目)。
我创建了一个函数来创建表单字段:
(defun form-field (type name label)
(cl-who:with-html-output (*standard-output* nil)
(:div :class "field"
(:label :for name label)
(:input :type type :name name))))
使用此功能时,即:(form-field "text" "username" "Username")
参数label
似乎被忽略... HTML输出为:
<div class="field"><label for="username"></label>
<input type="text" name="username"/></div>
而不是预期的输出:
<div class="field"><label for="username">Username</label>
<input type="text" name="username"/></div>
如果我修改函数并添加打印语句:
(defun form-field (type name label)
(cl-who:with-html-output (*standard-output* nil)
(print label)
(:div :class "field"
(:label :for name label)
(:input :type type :name name))))
“用户名”字符串已成功输出(但在 HTML 中仍被忽略)......有什么想法可能导致这种情况吗?
请记住,我在 acl-who:with-html-output-to-string
中调用此函数以与 hunchentoot 一起使用。