c: Wenn test = '$ {nicht leer' $ {records} "} 'wird nie falsch ausgewertet

8

Ich habe ein Problem mit JSTL und einem leeren Operator. Ich habe schon ein paar einfache Seiten gemacht und alles hat gut funktioniert, aber jetzt habe ich:

%Vor%

Nun, egal, ob ich das Attribut records einstelle oder nicht, die Schaltfläche delete erscheint:

%Vor%

in normalen Situation zu Datensätze Attribut übergeben ich ArrayList und dann foreach, aber manchmal ArrayList ist leer, so in diesen Situationen möchte ich nicht löschen Schaltfläche, ich kämpfte den einfachsten Weg, um dies zu erreichen wäre zu verwenden dieser leere Operator. Wo mache ich einen Fehler?

Ich habe sogar versucht, dieses Attribut manuell auf null zu setzen:

%Vor%

BEARBEITEN: @Qwe: ja du hast recht, es hat bei mir vorher geklappt weil ich getestet habe ob das attribut in meiner art leer war, es war immer wahr, weil ich falsches construct benutzt habe, aber es hat funktioniert weil ich nur eine string anzeigen wollte, wenn es da war Kein String zeigte nichts, also dachte ich, dass alles gut funktioniert.

    
Andna 11.02.2012, 20:16
quelle

1 Antwort

24

<c:if test='${not empty "${records}"}'> sowie <c:if test="${!empty '${showWarning}'}"> (aus Ihrem Kommentar) werden immer zu true aufgelöst, weil Sie tatsächlich testen, ob eine Zeichenfolge ${records} ist leer oder nicht, und offensichtlich ist es nicht.

Nur um sicher zu gehen - mit String ${records} meine ich einen String-Wert, so als ob Sie ihn in Java wie String foo = "${records}"; zuweisen würden.

Die nächste Codezeile testet, ob die Variable records (die von der Seite, der Anfrage, der Sitzung oder dem Anwendungsbereich der Anwendung nachgeschlagen wird) leer ist oder nicht:

%Vor%

Die Codezeile funktioniert zu 100% garantiert:)

Außerdem ist request.setAttribute("records",null) eine schlechte Methode, um Attribute zu entfernen, da empty tests nicht nur den Bereich, sondern auch Seite, Sitzung usw. anfordert. Verwenden Sie stattdessen <c:remove var='records'/> .

    
Oleg Mikheev 11.02.2012, 20:20
quelle

Tags und Links