为什么在此程序中出现异常(重定向/获取)
#lang web-server
(require web-server/formlets web-server/page) (struct app (nm) #:mutable)
(define (start req) (render-main-page req))这个函数将被大多数页面使用,并通过调用每个给定的页面生成器函数来生成完整的页面xexpr,每个页面生成器函数都可以嵌入它们的urls
(define (render-page embed/url a-title blocks)
(response/xexpr `(html (head (title ,a-title)
(body ,@(map (lambda (block) (block embed/url)) blocks))))))这是第一个页面生成器函数
(define (render-action-panel embed/url action)
`(a ([href ,(embed/url action)]) "New"))这是第一页
(define/page (render-main-page)
(local [(define (new-handler req) (render-app-page req (app "new value")))
(define (panel-block embed/url) (render-action-panel embed/url new-handler))]
(render-page embed/url "Title" (list panel-block)))) 这是第二个页面生成器函数(代表表单)
(define (add-app-formlet an-app) (formlet (#%# ,{=> input-string nm}) nm))
(define (render-app-form embed/url an-app save-handler)
`(div (form ([action ,(embed/url save-handler)][method "POST"])
(span ,@(formlet-display (add-app-formlet an-app) ))
(span (input ([type "submit"][value "Save"]))))));)第二种形式,保存处理程序在尝试执行post-redirect-get时抛出异常
(define/page (render-app-page an-app)
(local [(define (save-handler req)
(render-app-page
(redirect/get)
(set-app-nm! an-app (formlet-process (add-app-formlet an-app) req))))
(define (form-block embed/url)
(render-app-form embed/url an-app save-handler ))
]
(render-page embed/url "Title - form: " (list form-block))))
(require web-server/servlet-env)
(serve/servlet start)发布于 2011-09-30 22:58:02
您使用的是哪种redirect/get?
来自web-server/lang/servlet的(应该与#lang web-server一起使用)与来自web-server/servlet (应该与#lang racket (和朋友)一起使用)的不同。
此错误消息意味着您正在使用来自web-server/servlet的错误消息。
FWIW,web-server/page不能与#lang web-server一起使用,因为它只是来自web-server/servlet的send/suspend/dispatch上的一个简单宏。
https://stackoverflow.com/questions/7608577
复制相似问题