模板 – 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> } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |