Scala Play Framework 2.x模板中的变量

Scala Play Framework 2.x模板中的变量,scala,playframework-2.0,twirl,Scala,Playframework 2.0,Twirl,我浏览了网页,但在任何地方都没有找到答案。如果我遗漏了什么,请给我指一个教程 因此,我想在Play框架模板中定义一个变量,当然,稍后再使用它 当前我的代码如下所示: @if(menuitems.fetchFromVerySlowDatabase() != null) { <ul> @for(menuitem <- menuitems.fetchFromVerySlowDatabase()) { <li><a href="@menuite

我浏览了网页,但在任何地方都没有找到答案。如果我遗漏了什么,请给我指一个教程

因此,我想在Play框架模板中定义一个变量,当然,稍后再使用它

当前我的代码如下所示:

@if(menuitems.fetchFromVerySlowDatabase() != null) {
<ul>
    @for(menuitem <- menuitems.fetchFromVerySlowDatabase()) {
        <li><a href="@menuitem.getUrl()">menuitem.getTitle()</a></li>
    }
</ul>
}
谢谢大家!

我使用Java作为编程语言

最好的,
舒贝

只要记住一行就行了

@import scala.Predef; var menuitems_from_database = menuitems.fetchFromVerySlowDatabase();
实时代码示例(从默认模板修改
index.scala.html
):

@import scala.Predef;var menuitems_from_database=new java.util.ArrayList[String]()
@(信息:String)
@{
来自数据库的菜单项。添加(“1”)
菜单项来自数据库。添加(“2”)
""
}
@主(“欢迎玩”){
@if(菜单项来自数据库!=null){

    @for(menuitem)谢谢你的回答,但我不明白。我将代码更改为:var menuitems_from_database=menuitems.fetchFromVerySlowDatabase()@if(menuitems_from_database!=null){
      @for(menuitem有效!谢谢!一个小评论:现在是“真的”因为每个语句都必须向模板返回某些内容,所以只需像我的示例中向列表添加元素的部分那样使用它即可
因此您返回一个空字符串我知道这并不能回答您的问题,但您可能应该在调用模板之前进行任何繁重的计算,并将结果作为参数传递,而不是在模板内部执行操作,该操作只应用于显示内容。我同意,但是:我需要每页上的菜单项,因此我正在获取在模板中,否则每个控制器中的每一个动作都需要将菜单项传递给模板系统。或者至少,这就是我所想的。你有更好的解决方案吗?谢谢!如果你在每一页都需要它们,你可能想把它们装入尽可能少的时间。将它们作为控制器中的一个值进行一次性或永久性的调用,或者使用某种缓存系统来避免在每个页面上获取它们,特别是在名称似乎表明操作需要很长时间的情况下。然后,您可以创建一个函数,将此值传递给模板调用程序。是的,我正在尝试尽可能少地加载它。实际上,这几乎解决了(使用缓存)。但我确实希望避免将菜单项作为参数单独传递给每个模板。关于菜单。有一个很好的描述,我可以添加的只是您也可以添加缓存,play也有一个缓存API:
@import scala.Predef; var menuitems_from_database = menuitems.fetchFromVerySlowDatabase();
@import scala.Predef; var menuitems_from_database = new java.util.ArrayList[String]()
@(message: String)

@{
  menuitems_from_database.add("1")
  menuitems_from_database.add("2")
  ""
}

@main("Welcome to Play") {
    @if(menuitems_from_database != null) {
            <ul>
                @for(menuitem <- menuitems_from_database) {
                    <li><a href="@menuitem">@menuitem</a></li>
                }
            </ul>
        }
}
<!DOCTYPE html>
<html lang="en">
    <head>            
        <title>Welcome to Play</title>
        <link rel="stylesheet" media="screen" href="/assets/stylesheets/main.css">
        <link rel="shortcut icon" type="image/png" href="/assets/images/favicon.png">
        <script src="/assets/javascripts/hello.js" type="text/javascript"></script>
    </head>
    <body>
            <ul>
                    <li><a href="1">1</a></li>
                    <li><a href="2">2</a></li>
            </ul>
    </body>
</html>