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, wennmyList
wurden eine Liste vonUser
Objekte undusername
warenString
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()
InformationsquelleAutor Matt Westlake | 2014-06-30
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Groovy können Sie
.contains
auf jede Sammlung. So, für Ihren FallKönnten Sie ein benutzerdefiniertes tag, wenn Sie mögen:
grails-app/taglib/com/demo/StackOverflowTagLib.groovy
grails-app/views/demo/index.gsp
grails-app/controllers/com/demo/DemoController.groovy
Ich hoffe, das hilft.
Ich denke, Sie haben Ihre eigene Frage beantwortet: ja, wie
<g:if test="${myList.contains(username)}">
myList
undusername
?${myList.keySet()}
und den Vergleich mitfailedToSync.keySet()
. Was ist der InhaltfailedToSync.keySet()
.