当我尝试编译文档 http://restas.lisper.ru/en/manual/special-pages.html 中显示的渲染对象方法时,
(defmethod restas:render-object ((designer mydrawer)
(code (eql hunchentoot:+http-internal-server-error+)))
(setf (hunchentoot:content-type*) "text/plain")
"Oh, all very bad")
它给
There is no class named RESTAURANT::MYDRAWER SIMPLE-ERROR
这些渲染对象是如何工作的?
render-object 是一个泛型函数,它接受一个渲染对象,该对象要么是传递给:render-method
的对象,要么是 define-route
*default-render-method*
的值,以及要渲染的对象。然后,它呈现该对象(通常为文本,尽管您也可以将其呈现为八位组数组)。
该示例假定您有一个名为 mydrawer 的类。要使其正常工作,您需要执行以下操作:
(defclass mydrawer () ())
(defmethod restas:render-object ((designer mydrawer)
(code (eql hunchentoot:+http-internal-server-error+)))
(setf (hunchentoot:content-type*) "text/plain")
"Oh, all very bad")
(defmethod restas:render-object ((designer mydrawer) obj)
;; Default rendering of objects goes here,
;; this will just call the default render method
(restas:render-object nil obj))
然后使用 mydrawer
的实例作为单个路由或 restas 模块的呈现方法。