1

当我尝试编译文档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

这些渲染对象是如何工作的?

4

1 回答 1

0

render-object 是一个通用函数,它接受一个渲染对象,它是传递给:render-methodfor的对象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 模块的渲染方法。

于 2015-04-30T02:35:07.900 回答