小编eur*_*eka的帖子

如何在Ring处理程序中获取HttpServletRequest?

有没有办法在Ring处理程序中获取HttpServletRequest对象?我正在使用Noir来开发一个网络应用程序.我需要在处理URI时获取HttpServletRequest obj.所以我使用(noir.request.ring-request)函数来获取响铃请求映射,其中包含:servlet-request键,但值为nil.这是正确的做法还是我错过了什么?

以下是代码:

(ns my-app
     (:use noir.request))
(defpage [:get "/app"] []
     (str (ring-request)))
Run Code Online (Sandbox Code Playgroud)

结果:

{:remote-addr "127.0.0.1", :scheme :http, :query-params {}, :session {}, :form-params {}, :multipart-params {}, :servlet #, :request-method :get, :query-string nil, :content-type nil, :cookies {"ring-session" {:value "eb509a65-d33a-40d2-9646-e2ff785428b0"}}, :uri "/app", :server-name "127.0.0.1", :params {}, :headers {"cookie" "ring-session=eb509a65-d33a-40d2-9646-e2ff785428b0", "accept-charset" "GBK,utf-8;q=0.7,*;q=0.3", "accept-language" "en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4", "accept-encoding" "gzip,deflate,sdch", "accept" "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "user-agent" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2", "connection" "keep-alive", "host" "127.0.0.1:8080"}, :servlet-request #, :content-length nil, :server-port 8080, :character-encoding nil, :servlet-response #, …
Run Code Online (Sandbox Code Playgroud)

web-services clojure compojure ring noir

5
推荐指数
1
解决办法
980
查看次数

使用Clojure 1.3打破clojure.contrib中的一些代码?

由于Clojure 1.3"Earmuffed Vars不再自动被认为是动态的",clojure.contrib中的一些代码依赖于此功能,它们不再起作用.例如,clojure.contrib.sql中的db.

 Warning: *db* not declared dynamic and thus is not dynamically rebindable, but its name suggests otherwise. Please either indicate ^:dynamic *db* or change the name.
 Exception in thread "main" java.lang.RuntimeException: java.lang.ExceptionInInitializerError
Run Code Online (Sandbox Code Playgroud)

contrib库仍在1.2版本中.如何解决这个问题?或者是否有一些alpha或预发行版本的contrib lib可以与Clojure 1.3一起使用?

clojure

4
推荐指数
1
解决办法
250
查看次数

标签 统计

clojure ×2

compojure ×1

noir ×1

ring ×1

web-services ×1