# Dummes JSP-Problem



## SilentJ (30. Okt 2006)

Hallo,

ich habe in meiner Seite eine Variable sb im Java-Code definiert und ihr einen Wert zugewiesen.

Nun möchte per EL und dem <c:if>-Konstrukt den Inhalt der Variable darauf testen, ob er ungleich *null* ist.

Meine Lösung, die nicht funktioniert, sieht bisher wie folgt aus:

<c:if test="sb != null">123</c:if>

Wenn ich den zu testenden Ausdruck in geschweifte Klammern einbette, wird auf der Seite auch nichts ausgegeben. Ich weiß nicht weiter, zumal 
	
	
	
	





```
<% out.println(null==sb); %>
```
 korrekt ausgewertet wird.


----------



## Ralf Ueberfuhr (30. Okt 2006)

Wenn du EL verwenden willst, dann verwende sie auch richtig.


```
<c:if test="${sb != null}">123</c:if>
```
[/code]


----------



## SilentJ (30. Okt 2006)

Hallo, 

die Lösung funktioniert noch nicht.

Folgendes JSP-Fragment sei gegeben:


```
SessionBean sb = new SessionBean();
	if( null == sb ){
	    out.println("<p id=\"hover1\"><a href=\"login.htm\"><span id=\"hover1a\">Login</span></a></p>");
	}
	else
	{
	    out.println("

<a href=\"createuser.htm\">Create User</a></p>");
	    out.println("

<a href=\"logout.htm\">Logout</a></p>");
	}%>
	<c:if test="${sb != null}">Hallo</c:if>
```

Die in Java-Code verfasste Anweisungen verlaufen so, wie gewünscht. Nur die <c:if>-Anweisung will nicht recht.


----------



## SilentJ (30. Okt 2006)

Das Problem ist doch noch nicht behoben, egal ob eine sb jetzt null oder nicht null ist, wird mir Hallo anzeigt.

Help!


----------



## Ralf Ueberfuhr (30. Okt 2006)

```
SessionBean sb = new SessionBean();
```

sb ist bei dir nie null!


----------



## SilentJ (30. Okt 2006)

```
<%
	SessionBean sb = (SessionBean) request.getSession().getAttribute("session");
	HttpSession sess = request.getSession();
	if( sess != null )
	{
	    Enumeration e = sess.getAttributeNames();
	    out.println("<ul>");
	    while( e.hasMoreElements() )
	    {
			out.println( "[*]" + e.nextElement() + "");
	    }
	    out.println("[/list]");
	}
	
	if( null == sb ){
	    out.println("<p id=\"hover1\"><a href=\"login.htm\"><span id=\"hover1a\">Login</span></a></p>");
	}
	else
	{
	    out.println("

<a href=\"createuser.htm\">Create User</a></p>");
	    out.println("

<a href=\"logout.htm\">Logout</a></p>");
	}%>
	<c:if test="${ sb == null }">NULL</c:if>
	<c:if test="${ sb != null }">NOT NULL</c:if>
```

Das läuft so bei mir nicht. NOT NULL wird nicht angezeigt. Warum, weiß ich nicht.


----------



## Ralf Ueberfuhr (30. Okt 2006)

Dir zu helfen ist nicht einfach. Oben hast du das Problem, dass "sb != null" IMMER zutrifft, denn "Hallo" wird immer angezeigt.

Jetzt meinst du, dass "sb != null" NIE zutrifft...

Bevor wir weiterreden, sorge doch erstmal dafür, dass dieses <%..%>-Gemenge zusammen mit der JSTL einheitlich wird, also entweder nur <%...%> oder nur <c:...>


----------



## SlaterB (30. Okt 2006)

warum versuchst du sowas kompliziertes?
Versuchs doch erstmal mit einem String oder int.


```
<%
   String st = "abc";
%>
  gleich kommt st:  ${st}, st war schon
```
 
Beschreibt dieser Code nicht dein Problem in gleicher Weise,
ist aber viel kürzer und für alle verständlich?

Wenn du eine solche JSP hättest, dann könntest du dir auch mal 
die vom ApplicationsServer daraus  erzeuge Java-Datei anschauen,
das ist zugegebenermaßen nicht ganz einfach,

---------

also:
wenn du in einer JSP ${st} machst,
dann wird in der Session, im Request und im PageContext nachgesehen,
ob ein solchen Objekt existiert,

das ist aber nicht der Fall, denn wenn man eine normale Java-Variable erzeugt, 
ist diese (leider) für den JSP-Code unsichtbar


```
<%
   String st = "abc";
   pageContext.setAttribute("vvvvxy",st);
%>
  gleich kommt vvvvxy:  ${vvvvxy}, vvvvxywar schon
```

könnte dagegen klappen (oder ähnlich),
oder schreibe es in die Session oder in den Request


----------



## SilentJ (30. Okt 2006)

Wow, super, das klappt. Vielen, unglaublich vielen Dank.


----------

