Scalatra如何向路线发送参数?

时间:2013-02-27 21:35:45

标签: scala scalatra

我认为这是Scala相对较新的人。我已经看到了如何在Scala中创建“控制构造”的示例,但我不太了解Scalatra本身的代码。

有人可以解释'params'如何传递给定义的路由处理程序吗?我觉得这是一种有用的技术,我想知道它是如何完成的。

谢谢!

编辑:添加来自Scalatra网站的示例代码,以说明我在说什么:

class HelloWorldApp extends ScalatraFilter {
  get("/") {
    <h1>Hello, {params("name")}</h1>
  }
}

2 个答案:

答案 0 :(得分:3)

这些是涉及的特征:

trait ScalatraFilter extends Filter with ServletBase
trait ServletBase extends ScalatraBase with SessionSupport with Initializable
trait ScalatraBase extends ScalatraContext with CoreDsl with DynamicScope.....

使用params时,您使用的是ScalatraBase中定义的少数重载方法之一

def params(key: String)(implicit request: HttpServletRequest): String = params(request)(key)
def params(key: Symbol)(implicit request: HttpServletRequest): String = params(request)(key)
def params(implicit request: HttpServletRequest): Params = new ScalatraParams(multiParams)

检查代码

https://github.com/scalatra/scalatra/blob/develop/core/src/main/scala/org/scalatra/ScalatraBase.scala https://github.com/scalatra/scalatra/blob/develop/core/src/main/scala/org/scalatra/ScalatraFilter.scala https://github.com/scalatra/scalatra/blob/develop/core/src/main/scala/org/scalatra/servlet/ServletBase.scala

答案 1 :(得分:0)

通过使用Scala的DynamicVariable课程来完成。这是一篇简短的博客文章,非常好地解释了它。

http://www.riffraff.info/2009/4/11/step-a-scala-web-picoframework