grails, wie um zu prüfen, ob Wert in der Liste, die in gsp

Ich bekomme eine Liste zurück, die aus meinem handeln, dass ich wollen, um zu überprüfen, gegen einen anderen Wert in die GSP. Ich möchte in der Lage sein zu sehen, ob der Wert in der Liste wird zurückgegeben. Ich weiß, Sie tun können, direkten Vergleich

<g:if a="a">

aber was ich Suche ist ein string in array-Vergleich

<g:if a in [a,b,c,d]>

Sowas braucht

<g:if test="${myList}.contains(${username})}">

Versucht:

<g:if test="${myList.contains(username)}">

und alles ist false zurückgeben (auch wenn enthält, sollte das true sein)

Test Data:

        ${myList.keySet()}
        ${username}

<g:if test="${failedToSync.keySet().contains(username)}">
                <li>${username} yes</li>
            </g:if>
            <g:else>
                <li>${username} no</li>         
            </g:else>

Ausgänge:

[a] b
b no
[a] a
a no

Zusätzliche info:

"${username.stripIndent() == failedToSync.keySet()[0]}" gibt true zurück,

<g:if test="${(failedToSync.keySet()).contains(username.stripIndent())}"> returns false
  • <g:if test="${myList.contains(username)}"> sollte das tun, was Sie wollen, sind Sie sicher, dass die Liste definitiv enthält die richtigen Dinge? Zum Beispiel, wenn myList wurden eine Liste von User Objekte und username waren String dann wäre es (zu Recht) immer false zurück.
  • Verifiziert beide Objekte mithilfe von getClass() und überprüft, Sie sind beide strings
  • Du hast eine Eingabe vom Benutzer und versucht, diesen Wert vergleichen, ohne die Seite neu zu laden? Ich glaube, Sie brauchen einige javascript schreiben, vielleicht mit AJAX.
  • wäre ein bisschen spät für meinen Eingang, ich war gerade dabei etwas ähnliches in meinem Fall war es myList.enthält(Beispiel.id) das hat nicht funktioniert, bis ich es geändert myList.containst(Instanz.id as String). Die ids gesendet wird über json-controller und erinnerte sich daher Typ geändert. Mäntel und Dolche testen immer etwas zu tun.getClass()
Schreibe einen Kommentar