java - play2 模板上未解释变量

标签 java playframework playframework-2.2

我的 Play2 模板引擎有问题。有些变量在渲染过程中不会被解释。

当变量 {key.getKey} 用双引号引起来时,它不会被解释。我该如何解决这个问题?

Play 2.2.3 模板 (index.scala.html)

    @flash
    @(if (flash.size > 0) {
        flash.entrySet.iterator.map { key =>
            <div class="row">
                <div class="large-12 columns">
                    <div class="alert-box radius {key.getKey}" data-alert="">
                        {key.getKey.toUpperCase} &mdash; {key.getValue}
                        <a href="#" class="close">&times;</a>
                    </div>
                </div>
            </div>
        }
    })

HTML 输出:

    {"success": "The item has been created"}
    <div class="row">
       <div class="large-12 columns">
             <div class="alert-box radius {key.getKey}" data-alert="">
                  SUCCESS &mdash; The item has been created
                  <a href="#" class="close">&times;</a>
             </div>
        </div>
    </div>

使用 @ 变量玩 2.2.3 模板 (index.scala.html)

    @flash
    @(if (flash.size > 0) {
        flash.entrySet.iterator.map { key =>
            <div class="row">
                <div class="large-12 columns">
                    <div class="alert-box radius @{key.getKey}" data-alert="">
                        {key.getKey.toUpperCase} &mdash; {key.getValue}
                        <a href="#" class="close">&times;</a>
                    </div>
                </div>
            </div>
        }
    })

HTML 输出:

    {"success": "The item has been created"}
    <div class="row">
       <div class="large-12 columns">
             <div class="alert-box radius @{key.getKey}" data-alert="">
                  SUCCESS &mdash; The item has been created
                  <a href="#" class="close">&times;</a>
             </div>
        </div>
    </div>

最佳答案

编辑:由于之前不清楚这是 Scala 还是 Java,所以我修改了我的答案以使用 Play Java。

模板在 Java 中的工作方式似乎略有不同,并且 if 语句周围的括号把事情弄乱了。无论如何,您实际上并不需要 if 语句,因为映射空迭代器不会执行任何操作。这有效:

@flash.entrySet.iterator.map { key =>
    <div class="row">
        <div class="large-12 columns">
            <div class="alert-box radius @{key.getKey}" data-alert="">
                @{key.getKey.toUpperCase} &mdash; @{key.getValue}
                <a href="#" class="close">&times;</a>
            </div>
        </div>
    </div>
}

如果你真的想要if:

@if(flash.size > 0) {
     (above code)
}

关于java - play2 模板上未解释变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24063335/

相关文章:

scala - 在 Play 框架规范中设置 PhantomJSDriver 上的 Accept-Language

javascript - AngularJS 1.2.14 $http POST 错误响应正文为空

hibernate - 如何在 Play Framework 2.2 的单独线程中使用相同的数据库事务

java - 如何在Java中更新LookAndFeel?

Java的SWT : Setting the size of Group hides its widgets

java - 仅 ZBar 扫描二维码

javascript - ELSE/IF 语句无法正常工作

java - 真假游戏在第一轮后不起作用

syntax - @with 注释到底有什么作用? ( Play Framework )

java - Play Framework : PDF'ing a template that uses highcharts JS library via a Job