Hi.
When I try to open a web page generated by cl-who I get an empty web page:
------------------------------------------------------------ (start (make-instance 'acceptor :port 8000))
(push (create-prefix-dispatcher "/index.html" 'index) *dispatch-table*)
(defun index () (with-html-output (*standard-output* nil :indent t) (:html (:head (:title "Test page")) (:body (dotimes (x 10) (:htm (:p "Text")))))) -----------------------------------------------------------
and page on http://localhost:8000/index.html is empty. The source of the page is just: ---------------- </body> </html> --------------
Where is the problem ? If I remove dynamic code "(dotimes (x 10) ..." then it renders the page correctly.
Thanks
A standard Hunchentoot handler must return its output as a string and not send it to *standard-output*.
Edi.
2010/5/31 a fbogdanovic@xnet.hr:
Hi.
When I try to open a web page generated by cl-who I get an empty web page:
(start (make-instance 'acceptor :port 8000))
(push (create-prefix-dispatcher "/index.html" 'index) *dispatch-table*)
(defun index () (with-html-output (*standard-output* nil :indent t) (:html (:head (:title "Test page")) (:body (dotimes (x 10) (:htm (:p "Text"))))))
and page on http://localhost:8000/index.html is empty. The source of the page is just:
</body>
</html> --------------
Where is the problem ? If I remove dynamic code "(dotimes (x 10) ..." then it renders the page correctly.
Thanks _______________________________________________ cl-who-devel site list cl-who-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/cl-who-devel
Quoth Edi Weitz edi@agharta.de:
A standard Hunchentoot handler must return its output as a string and not send it to *standard-output*.
This should make things a little clearer:
;;; define *http-stream* as a special variable ;;; (so that it can be used anywhere, not just in function 'index') (defvar *http-stream* nil)
(defun reapeat-para (stream body n) (with-html-output (stream) (dotimes (i n) (:htm (:p (str body))))))
(defun index () (with-html-output-to-string (*http-stream* nil :indent t) (:html (:head (:title "The first dissenter")) (:body (repeat-para *http-stream* "Romans go home" 100)))))
Untested, but it should help.
Seb