Scalatra如何向路由发送参数?
我是作为一个对Scala比较陌生的人来问这个问题的。我已经看到了如何在Scala中创建“控件构造”的示例,但我对它的了解还不足以理解Scalatra本身的代码 有人能解释一下“params”是如何传递给已定义的路由处理程序的吗?我觉得这是一个有用的技术,我想知道它是如何做到的 谢谢大家! 编辑:添加Scalatra网站的示例代码,以说明我所说的内容:Scalatra如何向路由发送参数?,scala,scalatra,Scala,Scalatra,我是作为一个对Scala比较陌生的人来问这个问题的。我已经看到了如何在Scala中创建“控件构造”的示例,但我对它的了解还不足以理解Scalatra本身的代码 有人能解释一下“params”是如何传递给已定义的路由处理程序的吗?我觉得这是一个有用的技术,我想知道它是如何做到的 谢谢大家! 编辑:添加Scalatra网站的示例代码,以说明我所说的内容: class HelloWorldApp extends ScalatraFilter { get("/") { <h1>H
class HelloWorldApp extends ScalatraFilter {
get("/") {
<h1>Hello, {params("name")}</h1>
}
}
类HelloWorldApp扩展了ScalatraFilter{
获取(“/”){
你好,{params(“name”)}
}
}
这些是相关的特征:
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)
检查代码
这是通过使用Scala的
DynamicVariable
类完成的。这里有一篇很短的博客文章,很好地解释了这一点
啊哈,我还以为是传入了一个变量呢。将其作为一种方法是有意义的。谢谢你的信息和链接!