2014-05-18 6 views
12

Ich versuche in JSTL zu testen, wenn ein Sitzungsattribut leer ist. Das Attribut ist jedoch leer. JSTL sieht es als ein nicht leeres Attribut.JSTL: überprüfen, ob eine Zeichenfolge leer ist

Dies ist der Hardcode, den ich mit JSTL ersetzen möchte. Dieser Code funktioniert ordnungsgemäß:

<% if (request.getAttribute("error") != null) { %> 
    <div class="alert alert-danger"> 
     <strong>Oh snap, something's wrong, maybe the following error could help you out?<br /></strong> 
     <%= request.getAttribute("error")%> 
    </div> 
<% } %> 

So habe ich es mit JSTL ersetzt. Wenn dieses Kontrollkästchen aktiviert ist, ist das Fehlerattribut nicht leer, es ist jedoch leer.

<c:if test="${not empty sessionScope.error}"> 
    <div class="alert alert-danger"> 
     <strong>Oh snap, something's wrong, maybe the following error could help you out?<br /></strong> 
     <c:out value="${sessionScope.error}" /> 
    </div> 
</c:if> 
+0

Sie jstl Bibliothek hinzugefügt haben – gyanu

+2

Sie jstl Tag in Seite importiert ** <% @ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> ** – gyanu

+0

Das war in der Tat das Problem. Ich habe dies für mehr als eine Stunde behoben. Danke :) – DaanCelie

Antwort

13

die JSTL-Bibliothek hinzufügen und den Kern taglib erklären:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 

Die JSTL Äquivalent

<% if (request.getAttribute("error") != null) { %> 

ist

<c:if test="${not empty error}"> 
+0

OP macht auf die gleiche Weise. – Braj

+0

Es wurde versucht, das requestScope zu entfernen, das Problem besteht jedoch weiterhin. – DaanCelie

1

Ich versuche, in JSTL zu testen, ob ein session attribute leer

Sie haben in Sitzungsbereich nicht in Anfrage Umfang zu überprüfen.

Es sollte

<c:if test="${not empty sessionScope.error}"> 

statt

<c:if test="${not empty requestScope.error}"> 

sein, wenn Sie nicht sicher sind, über den Umfang, dann ohne Umfang verwenden, die in jedem Umfang von unten aussehen nach oben (Seite , Anfrage, Sitzung dann schließlich in Anwendung)

<c:if test="${not empty error}"> 
+0

Geändert, das gleiche Problem besteht fort. Ich habe auch versucht, den Bereich zu entfernen, funktioniert auch nicht. Ich bin mir absolut sicher, dass das Attribut leer ist, weil ich den alten Code aktiv gelassen habe und dieser Code nichts generiert. – DaanCelie

+0

Sehen Sie sich meinen bearbeiteten Post an. Teilen Sie den Code, wo Sie das Attribut festlegen. Möglicherweise ist "Fehler" nicht der korrekte Attributname. – Braj

+1

'$ {nicht leer null}' und '$ {nicht leer" "}' return 'false'. – Braj