【问题标题】:exception: current-continuation-marks: no corresponding prompt in the continuation: #<continuation-prompt-tag:web>异常:current-continuation-marks:在继续中没有相应的提示:#<continuation-prompt-tag:web>
【发布时间】:2011-09-30 09:41:16
【问题描述】:

为什么我在这个程序中(重定向/获取)出现异常

#lang web-server
(require web-server/formlets web-server/page) (struct app (nm) #:mutable)
(define (start req) (render-main-page req))

这个函数被大多数页面使用,并通过调用每个给定的页面生成器函数来生成完整的页面xexpr,每个生成器函数都可以嵌入它们的url

(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)

【问题讨论】:

    标签: scheme racket


    【解决方案1】:

    您使用的是哪个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/servletsend/suspend/dispatch 上的一个简单宏。

    【讨论】:

    • 我将 lang 替换为 #lang 球拍(需要 web-server/http web-server/formlets web-server/page web-server/servlet)
    猜你喜欢
    • 2014-08-02
    • 2019-03-19
    • 2022-01-21
    • 2015-03-27
    • 2011-08-03
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多