我是Scala的新手,我正在尝试构建一个href链接到一个已经使用HTML和JavaScript构建的网站中的另一个页面。所有链接都设置为:
<a href="mypage.html">
我一直在研究Scala,并且了解它比仅仅引用另一个页面更多的路由和配置。我也明白其他html页面似乎是用作main.scala.html页面中@content标签的单页面应用程序设置。我对这个描述可能有误,但这对我来说是有道理的。
我已经设置了一个新的Scala页面并在我的HTML中引用它:
<div class="col-lg-3 col-md-3 col-sm-6 col-xs-6 col-ss-12 margbot30">
<a class="services_item" href="@views.html.login3(loginForm)">
<p>
<b>New</b> User Account
</p> <span>Sign up for a user account</span>
</a>
</div>
它没有给我一个错误,但实际上在<div>
标记中显示了login3.scala.html页面。我想点击文本,然后打开该页面。
如何让此链接或路由正常工作?
我找到了这篇文章,但我仍然不确定该怎么做: Play! Framework - creating simple html links
我感谢帮助和任何代码示例。
答案 0 :(得分:2)
"@views.html.login3(loginForm)"
正在做的是调用Scala函数login3
,并将生成的内容呈现到页面中。
不要考虑链接到页面的页面,而应考虑链接到控制器的页面。
如果您有这样的控制器:
package controllers;
class FooController extends Controller {
def foo = Action { request =>
Ok(views.html.foo())
}
def bar = Action { request =>
Ok(views.html.bar())
}
}
这是通过路径文件公开的
GET /foo controllers.FooController.foo
POST /bar controllers.FooController.bar
在您的视图中,您可以使用生成的路由来定义超链接:
<a href="@routes.FooController.foo()">whatever</a>
所以在你的情况下,而不是使用
<a class="services_item" href="@views.html.login3(loginForm)">
你会改为
<a class="services_item" href="@routes.SomeController.theFunctionThatRendersLogin3()">