模板 – scala模板中的匹配情况不起作用,在play2中
发布时间:2020-12-16 09:46:00 所属栏目:安全 来源:网络整理
导读:我的scala模板中的代码: @session.get("user.id") match { case Some(_) = "xx" case _ = "yy"}a href=""Logout/a 但是这种情况…直接显示在生成的html页面上: match { case Some(_) = "xx" case _ = "yy" } Logout 而在生成的.template.scala中,它是: "
|
我的scala模板中的代码:
@session.get("user.id") match {
case Some(_) => "xx"
case _ => "yy"
}
<a href="">Logout</a>
但是这种情况…直接显示在生成的html页面上: match { case Some(_) => "xx" case _ => "yy" } Logout
而在生成的.template.scala中,它是: """
<body>
"""),_display_(Seq(/*11.4*/session/*11.11*/.get("user.id"))),format.raw/*11.26*/(""" match """),format.raw("""{"""),format.raw/*11.34*/("""
case Some(_) => "xx"
case _ => "yy"
"""),format.raw("""}"""),format.raw/*14.4*/("""
<a href="">Logout</a>
"""
但是我在doc中看到,应该支持比赛:https://github.com/playframework/Play20/wiki/ScalaTemplates @connected match {
case models.Admin(name) => {
<span class="admin">Connected as admin (@name)</span>
}
case models.User(name) => {
<span>Connected as @name</span>
}
}
UPDATE1 最后,我找到了一种工作方式: @defining(session.get("user.id")) { x =>
@x match {
case Some(_) => { "xx" }
case None => {"yy"}
}
}
但它看起来很复杂 UPDATE2 找另一个简单的解决方案: @{session.get("user.id") match {
case Some(_) => "xx"
case _ => "yy"
}}
但在复杂情况下效果不佳: @{session.get("user.id") match {
case Some(_) => {<a href="@routes.Users.logout">Logout</a>}
case _ => "yy"
}}
@ routes.Users.logout将不会转换。 UPDATE3 这是一个getOrElse解决方案: @session.get("user.id").map { _ =>
<a href="@routes.Users.logout">Logout</a>
}.getOrElse {
Not logged
}
它工作,但它不使用匹配情况 解决方法
我遇到同样的问题。将卷曲大括号中的正确部分包围,为我解决问题。
这适用于我: @user match {
case Some(user) => { Welcome,@user.username! }
case None => { <a href="@routes.Application.login">Login</a> }
}
没有大括号,它在{在匹配线上突出显示的空格之后给出了一个错误。 “’case’期望,但找到标识符。 我也给了我这个错误,如果我尝试把一个@开放之前的大括号如下所示: //This gives me the same error
@user match {
case Some(user) => @{ "Welcome," + user.username + "!" }
case None => { <a href="@routes.Application.login">Login</a> }
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
