如何从Play html模板调用Scala函数

如何从Play html模板调用Scala函数,scala,playframework,Scala,Playframework,我是Scala/Play框架的新手 目前,我正在尝试从html页面调用Scala函数:test.Scala.html,并将散列参数传递给Scala函数 我在routes中添加了以下行: GET /hello controllers.Application.test POST /hello controllers.Application.hello 在我的test.scala.html中,我有: @para

我是Scala/Play框架的新手

目前,我正在尝试从html页面调用Scala函数:test.Scala.html,并将散列参数传递给Scala函数

我在routes中添加了以下行:

GET   /hello                      controllers.Application.test
POST  /hello                      controllers.Application.hello
在我的test.scala.html中,我有:

@params = { window.location.hash }
@helper.form(action = routes.Application.hello) {

}
我的hello函数定义为:

 def hello() = Action {
   Ok("Hello !")
 }
我完全被路由和@的概念搞糊涂了,所以我不太确定我做的是对的,还是错的。请指出我的错误


提前感谢。

如果函数返回的是一个操作,而不是要在内部视图(HTML)中格式化显示的内容,则您可能希望将请求从链接单击或表单提交路由到路由中配置的url(又名
/hello

要添加参数,您需要将其添加为url查询字符串(例如,用于链接→ <代码>/hello?p=1),或带有表单的输入/字段(例如

您可以使用反向路由获取URL以调用配置的操作。例如,对于发送到
hello
的表单帖子。在这种情况下,您需要查看表单映射,以便从请求中提取参数。

1)路由的概念

此路由的主要目的只是将每个传入的HTTP请求转换为任何控制器中的操作。通过
反向路由
它可以让您在HTML/Controller/else中使用正确的部分
controllers.Application.hello

因此,对于上面的两个URL,很可能会说,如果有一个使用方法
GET
的请求
/hello
,那么它将转到
应用程序
控制器和
测试
方法。如果您不了解每个路由方法的作用,请阅读此

2) 魔法
@
字符

@
是一个字符,如果需要使用
Scala
代码或变量,可以在HTML文件中使用。如果您是一名PHP开发人员,您可以将
PHP
代码组合到HTML文件中

以下是使用此
@
字符可以执行的操作的详细说明

3) 将散列传递给控制器

对于这种特定情况,最简单的方法是通过表单传递值:

@helper.form(action = routes.Application.hello) {
    @helper.inputText(myForm("username"), 'id -> "username", 'size -> 30, 'value -> 'value here' )
}
然而,如果您是一名新的Play开发者,那么我恐怕您需要阅读Play Framework的相关内容