抱歉这个可能很愚蠢的问题,但我是 Common Lisp 的新手(我是从 Racket 迁移过来的),到目前为止,我正在用 Hunchentoot、cl-who 和其他一些杂项包构建一个 Web 应用程序,但是我最近遇到了一个我无法解决的问题:如果哈希不为空,我正在尝试遍历一个哈希并显示它的值(它们是结构)。如果是,我想显示“这是空的”消息。但是, cl-who 仅输出调用后的 HTML。这是我的代码:
(tbnl:define-easy-handler (index :uri "/") ()
"Landing page."
(setf (tbnl:content-type*) "text/html")
(with-html-ouptut (*standard-output*)
(:html
(:head (:title "Chattr: Neo-BBS"))
(:body
(:div :id "header"
:style "text-align:center;"
(:h1 "Welcome to Chattr")
(:h3 "Please select the sub-board you would like to chat
on."))
(if (> (hash-table-size *boards*) 0)
(dolist (board (hash-table-values *boards*))
(htm
(:span (html-display board)) (:br)))
(htm
(:b "Sorry, there aren't any boards. Why not create
one?") (:br)))
(:a :href "/new-board" "Create New Board")))))
所以在这种情况下,“创建新板”出现了,但粗体文本和标题都没有。但是,如果我在 if 之后移动标题,它就会显示出来。
我已经为此苦苦挣扎了六个多小时,有人对我有任何提示吗?谢谢!