gpt4 book ai didi

scala - Scala 模板中的 HTML 属性

转载 作者:行者123 更新时间:2023-12-02 15:36:31 24 4
gpt4 key购买 nike

我是一名 Java 开发人员,最近开始学习 Play Framework。我一直试图让下面的模板工作,但似乎无法得到它。我的 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>
}
}
}

我稍后会在我的模板中这样调用它

<ul class="nav">
@navItem("Search Documents", "/search")
</ul>

生成的链接的 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>
}

最佳答案

对此不太确定,但我的猜测如下: @{ ... } 表示动态语句的开始,其所有内容都被视为 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>
}
}

关于scala - Scala 模板中的 HTML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16624588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com