JSP: Liste in Bean über Session aufbauen

px5

Mitglied
Hallo,

ich habe hier ein Problem mit JSP und Beans, wo ich einfach nicht weiterkomme.
Ich will Daten aus einem WebFormular in einen Bean zwischenspeichern und diesen Bean einer List hinzufügen auf die ich auch als Bean zugreife.
Sinn des ganzen soll sein, dass ich jedesmal wenn ich das Formular abschicke einen neuen Eintrag in der Liste habe, die ich mir als ganze ausgeben lasse.
Nur funktioniert das Ganze leider überhaupt nicht, wenn ich den Scope des eines Beans auf Session stelle. Obwohl das doch genau dafür gedacht ist?
Hier mal der ganze Code, evtl sieht jemand den Fehler oder kann mir erklären warum das gar nicht so funktionieren kann 😉


Java:
<form method="POST">
   Artikelname:
   <input type="text" id="form_name" name="form_name" />
   <br/>
   Preis Trennung mit Punkt:
   <input type="text" id="form_preis" name="form_preis" />
   <br/>
   Anzahl
       <select name="form_anzahl" size="1">
      <option>1</option>
      <option>2</option>
      <option>3</option>
      <option>4</option>
      <option>5</option>
    </select>  <br/>
   <input type="submit" value="Hinzufuegen" />
</form>
<%@ page import="mmn.*" %>
<jsp:useBean id="item" class="mmn.Item" scope="request" >
<jsp:setProperty name="item" property="name" param="form_name"/>
<jsp:setProperty name="item" property="anzahl" param="form_anzahl"/>
<jsp:setProperty name="item" property="preis" param="form_preis"/>

<jsp:useBean id="shop" class="mmn.Shop" scope="session" >
<% 
for(Item i : shop.getItems())
{
out.println(i.getName());
out.println(i.getAnzahl());
out.println(i.getPreis());
}

shop.addItem(item);

 %>

</jsp:useBean>
</jsp:useBean>
 
wär's denn hier nicht angebrachter, den Request-Scope zu nutzen. Du wolltest doch, wie du schreibst, das Ganze nur zwischenspeichern.
 
wär's denn hier nicht angebrachter, den Request-Scope zu nutzen. Du wolltest doch, wie du schreibst, das Ganze nur zwischenspeichern.

"zwischenspeichern" so lange der User auf der Seite ist. Also auch nach erneuten absenden des Formulars, sollte das Bean Objekt weiter bestehen und ich füge die aktuellen Formulardaten in die Liste ein. So hab ich mir das gedacht und deswegen Session Scope. Mit Request erzeug ich mir ja bei jedem Mal ein neues Bean oder?
 
dann solltest du es vllt. doch ein wenig genauer beschreiben. Was genau funktioniert nicht? Fehlermeldungen etc.. Kommt irgendetwas in deiner Liste an? Oder nicht, oder ggf. zuviel (also der Inhalt deiner Bean mehr als einmal) . Um nicht die Glaskugel bemühen zu müssen, braucht man wohl noch einige Informationen.
 
es kommt nichts in der liste an.
sobald ich den scope auf request stelle, kommt nach einem submit das element an.
nur ich will ja das bei mehrmaligem submit alle in der liste gespeichert werden.
 
Du musst die jsp:useBean Tags wieder schliessen wenn du die Beans erstellt hast. Ich bin mir nicht sicher aber ich denke der Code zwischen dem Start- und End tag wird NUR beim erzeugen des Beans ausgefuehrt. Im Request scope funktioniert dein Code da der Shop ja in jedem Request erstellt wird, aber im Session Scope wird dein code nur beim ersten mal ausgefuehrt!

Versuch mal die mal hier:


Java:
<%@ page import="mmn.*"%>
<jsp:useBean id="item" class="mmn.Item" scope="request">
	<jsp:setProperty name="item" property="name" param="form_name" />
	<jsp:setProperty name="item" property="anzahl" param="form_anzahl" />
	<jsp:setProperty name="item" property="preis" param="form_preis" />
</jsp:useBean>

<jsp:useBean id="shop" class="mmn.Shop" scope="session">
</jsp:useBean>

<%
	for (Item i : shop.getItems()) {
		out.println(i.getName());
		out.println(i.getAnzahl());
		out.println(i.getPreis());
	}

	shop.addItem(item);
%>
 

Neue Themen


Zurück
Oben