2015-04-17 28 views
1

當我試圖編譯的文件http://restas.lisper.ru/en/manual/special-pages.html在這裏顯示的渲染對象的方法,什麼是restas渲染對象?

(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 

如何將這些渲染對象一樣的東西工作?

+0

爲了更好地理解它,你應該閱讀關於泛型函數:http://www.gigamonkeys.com/book/object-reorientation-generic-functions.html 在你的情況,你沒有類'mydrawer '在當前包中定義 –

回答

0

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模塊。