2015-02-11 76 views
4

我嘗試實現一個基於Hunchentoot的簡單後期示例。無法在LISP hunchentoot中獲得帖子

下面是代碼:

(define-easy-handler (test :uri "/test")() 
    (with-html-output-to-string (*standard-output* nil :prologue t :indent t) 
    (:html 
    (:body 
     (:h1 "Test") 
     (:form :action "/test2" :method "post" :id "addform" 
    (:input :type "text" :name "name" :class "txt") 
    (:input :type "submit" :class "btn" :value "Submit")))))) 

(define-easy-handler (test2 :uri "/test2") (name) 
    (with-html-output-to-string (*standard-output* nil :prologue t :indent t) 
    (:html 
    (:body 
     (:h1 name))))) 

我可以正確連接到http://127.0.0.1:8080/test和看到的文字輸入方式。但是當我提交文本時,我得到一個空白頁面,我期待在文本輸入中給出標題的頁面。

不知道什麼是錯,任何人都可以建議嗎?

回答

5

處理程序改成這樣

(define-easy-handler (test2 :uri "/test2") (name) 
    (with-html-output-to-string (*standard-output* nil :prologue t :indent t) 
    (:html 
    (:body 
    (:h1 (str name)))))) 

那麼它應該工作。閱讀cl-who文檔。 尤其是關於本地宏的信息。 我在這裏包括相關文檔。

一種形式,既不是字符串,也不是一個關鍵字,也不能與關鍵字開頭的列表將保持原樣,除了以下本地宏:

  • 形式,看起來像(STR形式)將與該像(FMT形式*)

    ​​
  • 形式取代將與

    (format s form*) 
    
    (loop for i below 10 do (fmt "~R" i)) => (loop for i below 10 do (format s "~R" i)) 
    
  • 被取代種
  • 形式,看起來像(ESC形式)將與

    (let ((result form)) (when result (write-string (escape-string result s)))) 
    
  • 被取代,只要一個形式如下(HTM格式*),那麼每一表格將受到我們只是描述轉換規則,也就是說,這個主體是用另一個WITH-HTML-OUTPUT調用包裝的。

    (loop for i below 100 do (htm (:b "foo") :br)) 
    => (loop for i below 100 do (progn (write-string "<b>foo</b><br />" s))) 
    
+0

非常感謝。有用。我會盡力在文檔中說明這一點。 – Xaving 2015-02-11 12:58:53