Frage

Ich habe ein Problem mit der Play2-Vorlagen-Engine.Einige Variablen werden während des Rendervorgangs nicht interpretiert.

Die Variable {key.getKey} wird nicht interpretiert, wenn sie in doppelte Anführungszeichen gesetzt wurde.Wie kann ich dieses Problem lösen?

PLAY 2.2.3 VORLAGE (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-AUSGABE:

    {"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>

PLAY 2.2.3 VORLAGE (index.scala.html) mit @-Variable

    @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-AUSGABE:

    {"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>
War es hilfreich?

Lösung

BEARBEITEN: Da vorher unklar war, ob es sich um Scala oder Java handelte, habe ich meine Antwort überarbeitet, um mit Play Java zu arbeiten.

Es scheint, dass die Vorlagen in Java etwas anders funktionieren, und die Klammern um die if Aussage brachte alles durcheinander.Das brauchst du nicht wirklich if -Anweisung sowieso, da die Zuordnung eines leeren Iterators nichts bewirkt.Das funktioniert:

@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>
}

Und wenn Sie das wirklich wollen if:

@if(flash.size > 0) {
     (above code)
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top