JSP useBean mit sessionscope

mschlegel

Erfahrenes Mitglied
Hallo

Ich habe gerade ein Problem mit einem Template. Damit die Teile wiederverwendbar sind, habe ich es in mehrere JSPs aufgeteilt, allerdings weis ich jetzt nicht wie ich mit meiner Login-Logik weitermachen soll.

Das letzte mal hatte ich es so gemacht, dass diese Funktionalität einfach komplett in der login.jsp liegt die vom Template inkludiert wird. Jetzt kam mir aber die Idee, ob es nicht irgendwie möglich ist die dafür vorgesehene LoginBean über mehrere JSPs zu verwenden.

Also im template,jsp etwas wie
HTML:
<jsp:useBean id="login" class="blubb.myClass" scope="session"/>
Ist es jetzt möglich auf diese Bean in der login.jsp zuzugreifen? Für irgend etwas muss dieser scope ja da sein :)
Warum ich das machen möchte: ich dachte dass ich eventuell in anderen Teilen prüfen möchte ob der Besucher angemeldet ist (sprich login.isUserLoggedIn()) um dann ein paar layoutanpassungen vorzunehmen.
Oder wäre diese, soweit überhaupt möglich, ein Anti-Pattern?
 
Habe die Lösung jetzt selber gefunden.

Ich musste die Variable zusätzlich noch mit der JSTL-core setzen
HTML:
<jsp:useBean id="test" class="de.blubb.clazz">
   <% test.init() %>
</jsp:useBean>

<c:set var="test" value="${test}" scope="session"/>

danach konnte ich in einer anderen JSP mitels
HTML:
<jsp:useBean id="test" type="de.blubb.clazz" scope="session" />
darauf zugreifen. Der Unterschied ist marginal, anstatt von class muss man type angeben.

Es war dann noch etwas schwierig nachdem man sich auf der Seite eingelogt hatte, denn dann wird eine neue Session erstellt und er kann das vorherige Objekt nicht finden. Dazu musste ich dann im Loginmethode die Klassenreferenz manuell zur (neuen) Session hinzufügen.
 

Neue Beiträge

Zurück