什么是 restas 渲染对象



当我尝试编译文档 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 模块的呈现方法。

最新更新