加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

模板 – 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> }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读