ani*_*dhc 1 scala playframework-2.0 scala-template
我是一名Java开发人员,最近开始学习Play框架。我一直在尝试使以下模板正常工作,但似乎无法实现。我的Scala模板中包含以下内容
@navItem(label: String, link1: String) = {
@{if (Application.isAuthenticated()) {
<li class="active">
<a href="@link1">label</a>
</li>
}
else {
<li class="disabled">
<a href="@link1">{label}</a>
</li>
}
}
}
Run Code Online (Sandbox Code Playgroud)
我稍后会在我的模板中这样称呼它
<ul class="nav">
@navItem("Search Documents", "/search")
</ul>
Run Code Online (Sandbox Code Playgroud)
生成的链接具有href localhost:9000/@link1而不是localhost:9000/search。我不确定发生了什么。
PS:如果我按以下方式更改模板,则效果很好。但是我想了解为什么上面的模板不起作用。
@navItem(label: String, link1: String) = {
<li class="@(if (Application.isAuthenticated()) "active" else "disabled")">
<a href="@link">@label</a>
</li>
}
Run Code Online (Sandbox Code Playgroud)
对此不太确定,但我的猜测可能是:@{ ... }表示动态语句的开始,其所有内容均视为Scala代码。因此,这是一个正常的if条件,结果是两个字符串,两个字符串都简单地返回到模板中。
您为什么仍将其标记为多行代码块?你有这样尝试过吗?(请注意第二个@符号后缺少的花括号):
@navItem(label: String, link1: String) = {
@if(Application.isAuthenticated()) {
<li class="active">
<a href="@link1">@label</a>
</li>
} else {
<li class="disabled">
<a href="@link1">@label</a>
</li>
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1734 次 |
| 最近记录: |