我在斯卡拉模板代碼:比賽情況斯卡拉模板不工作,play2
@session.get("user.id") match {
case Some(_) => "xx"
case _ => "yy"
}
<a href="">Logout</a>
但case ...
直接顯示生成的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>
"""
但我看到的文檔,它應該支持match case
: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
}
它的工作原理,但它不使用match case
如果將括號中的正確部分括起來怎麼辦?例如。''一些(_)=> {「xx」}' – 2012-03-17 09:08:23
謝謝,但那不起作用 – Freewind 2012-03-17 09:40:49