Play Framework Twirl 模板 html 元素属性

Play Framework Twirl template html element attribute

我正在使用 Play Framework 2.5,处理 scala.html 和 Twirl 模板。有人可以帮助我了解如何将跨度上的 "key" 设置为我的 "val id" 吗?

我似乎无法让它在 html 元素中工作 attributes.I 我不确定要使用什么语法将我的 val id 写入我的 span 键。

感谢您的帮助。

@{
    val rank = player.rank
    val id = player.id

    if(rank == "Great") {
        <span key="{id}">{rank}</span>
    } else if(rank == "Good") {
        <span key="{id}">{rank}</span>
    }
}

您不能在 @{ } 块中添加 html。你想要的大概是这样的:

@if(player.rank == "Great") {
    <span key="@player.id">@player.rank</span>
} else if(player.rank == "Good") {
    <span key="@player.id">@player.rank</span>
}

在这些模板中声明变量并不像看起来那么容易。 Check the documentation 一些例子。

我会使用 @defining(){} 来解决我的问题。 Twirl 没有 else if。我将默认使用 if 语句。我就是这样解决的。

@defining(player.rank) { rank =>
    @defining(player.id) { id =>
        @if(rank == "Great") {
            <span key="@id">@rank</span>
        }
        @if(rank == "Good") {
            <span key="@id">@rank</span>
        }
        
        <select key="@id">
        @for((key, value) <- model.getAllRankings()){
            <option id="@key" @if(rank == value) {selected}>@value</option>
        }
        </select>
    }
}