JSP session-Tracking

  • Ersteller Ersteller schlumpfine
  • Erstellt am Erstellt am
S

schlumpfine

Guest
Wie kann ich denn einen Vector in einer .jsp erzeugen, diesen in einer session speichern und dann in der nächsten .jsp ausgeben?
Alles seperat ist mir klar, aber ich kanns irgendwie nicht zusammen bringen :confused:

Wo isn da der Fehler? Bin total ratlos...

view1.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<jsp:useBean id='tn' scope='session' class='j2eekurs3.TeilnehmerModel'/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Teilnehmer</title>
</head>
<body>

<%-- Imports for the Page --%>
<%@ page import="java.util.Vector"%>

<%-- Variable for this page --%>
<% Vector tlist = new Vector();%>


Tragen Sie nun die Namen der Teilnehmer ein:
<p>

<form action='view2.jsp' method='post'>

<%
for (int i=0; i<tn.getX() ; i++){
out.println(i + ". Teilnehmer: ");
out.println("<input type='text' name='name' value='Name' size=20 maxlength=50>");
out.println("<br>");
tlist.add("name");

}
%>

<jsp:setProperty name="tn" property="teilnehmer" value="tlist"/>

<%
session.setAttribute(tn, "tlist"));
%>

<input type="submit" value="Bestätigen">


</form>


</p>
</body>
</html>

view2.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<jsp:useBean id='tn' scope='request' class='j2eekurs3.TeilnehmerModel'/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page language="java" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Teilnehmer</title>
</head>
<body>

<p>
Teilnehmerliste:

<jsp:getProperty name="tn" property="teilnehmer"/>

<%
out.println("name: " + session.getAttribute("tlist"));
%>

</p>
</body>
</html>
 
schlumpfine schrieb:
Wie kann ich denn einen Vector in einer .jsp erzeugen, diesen in einer session speichern und dann in der nächsten .jsp ausgeben?
Alles seperat ist mir klar, aber ich kanns irgendwie nicht zusammen bringen :confused:

Wo isn da der Fehler? Bin total ratlos...

view1.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<jsp:useBean id='tn' scope='session' class='j2eekurs3.TeilnehmerModel'/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Teilnehmer</title>
</head>
<body>

<%-- Imports for the Page --%>
<%@ page import="java.util.Vector"%>

<%-- Variable for this page --%>
<% Vector tlist = new Vector();%>


Tragen Sie nun die Namen der Teilnehmer ein:
<p>

<form action='view2.jsp' method='post'>

<%
for (int i=0; i<tn.getX() ; i++){
out.println(i + ". Teilnehmer: ");
out.println("<input type='text' name='name' value='Name' size=20 maxlength=50>");
out.println("<br>");
tlist.add("name");

}
%>

<jsp:setProperty name="tn" property="teilnehmer" value="tlist"/>

<%
session.setAttribute(tn, "tlist"));
%>

<input type="submit" value="Bestätigen">


</form>


</p>
</body>
</html>

view2.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<jsp:useBean id='tn' scope='request' class='j2eekurs3.TeilnehmerModel'/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page language="java" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Teilnehmer</title>
</head>
<body>

<p>
Teilnehmerliste:

<jsp:getProperty name="tn" property="teilnehmer"/>

<%
out.println("name: " + session.getAttribute("tlist"));
%>

</p>
</body>
</html>



wenn ich mich auskennen würde,dann würd ich dir klattttttttt helfen
 
mmh, schade eigentlich. letztendlich hängts nur in der for schleife: wie spreche ich das textfeld an? eigentlich ja mit dem namen (nier: "name"). aber bei tlist.add(name) bekomm ich ne fehlermeldung und bei tlist.add("name") added er natürlich den String name....hat keiner ne idee?
 
Du hast hier:

session.setAttribute(tn, "tlist"));

Eine doppelte Klammer zu, jedoch nur eine auf.
Da müsste er sich doch schon mal beschweren, oder?

Ansonsten müsstest du über tlist.add(name.value) eigentlich an den Wert (sprich Inhalt) des Objektes namen herankommen, wenn ich den Code richtig gelesen habe. Bin leider c# Programmierer, muss mich aber auch demnächst mit Java auseinandersetzen.
 
mmh, ja hab ich auch gedacht. aber dann bekomm ich die fehlermeldung "name cannot be resolved"
 
dann, wird es als String übergeben...und in dem vector gespeichert, aber ich will ja die namen ausgeben (fritz, meier, schulze) und dann würde (name.value, name.value, name.value)
das is ja das, was mich verwundert: normalerweise kann man ja über den namen eines html-objektes auf dessen inhalt zugreifen, das funzt hier aber nich
 
vielleicht solltest du das Textfeld name mal umbennen, bei dir heißt das Objekt name, aber man greift auch über die Objekteigenschaft name auf den Namen des Objektes zu.
Kann gut sein, dass da der JIT-Compiler im Tomcat aus dem Takt gerät, ich wüsste auch nur was du meinst weil du es erklärst - würde jedenfalls gut zur Fehlermeldung "name can not be resolved" passen, er kann halt nicht das Objekt name zuordnen, weil das bei dir nicht eindeutig ist.
Also so:
<input type='text' name='txtName' value='Name' size=20 maxlength=50>
 
mmh, ich hab schon soviel damit rumprobiert. ich habs auch mit ner anderen bezeichnung versucht, aber ich probiers nochmal
 
out.println("<input type='text' name='tn' value='' size=20 maxlength=50>");

v.addElement(tn.value);

Ergebnis:
"Generated servlet error:
tn.value cannot be resolved or is not a field"

Argh, das macht mich noch wahnsinnig...
 
java is ******** ^_^
hat mich auch oft zur verzweiflung getrieben, und was hats mir genützt, nix, habs nie gebraucht und in der klausur hab ichs auch verkackt :P
aberwart n bissel, hier gibts sicher wen, ders drauf hat :)
 
an und für sich isset net weiter schwer die aufgabe zu realisieren, nur will der dozent eben unbeding das ganze per jsp gelöst haben...
 
Bin mir net sicher ob dir das weiterhelft, mit jsp fang ich auch gerade erst an. Aber auf den Inhalt eines Textfeldes greift man doch (nach Absenden des Formulars) in etwa so zu:

String variablenname = request.getParameter("input_name");
 
Jepp genau, das kann man in dem Servlet machen, an das die Eingaben gesendet werden. das Problem is nur, dass ich auf einer Seite als User ne Zahl eingebe, wieviel teilnehmer angelegt werden sollen, dann wird dies an ein Servlet geleitet, das diesen Wert ausliest und den request an ne andere jsp weiterleitet, wo dann in ner for-schleife die benötigten input-felder generiert werden (in nem sog. scriptlet):

<%
for (int i=0; i<tn.getX() ; i++){
out.println(i + ". Teilnehmer: ");
out.println("<input type='text' name='name' value='Name' size=20 maxlength=50>");
out.println("<br>");
tlist.add(name);

}
%>

nun is ja schon ne java-bean vorhanden, in die ich dann gleich in der o.g. for-Schleife die Teilnehmer eintragen wollte.

Wenn ichs aber erst mit request.getParameter("input_name") in dem servlet, an das die session weitergeleitet wird mache, dann gehts auch net bzw. ich hab kein plan. mmh, ach weiß auch nich
 
So, jetzt hab ichs: Der Vector wird nun nicht in der jsp, sondern im servlet gefüllt...
Danke nochmal für die Hilfe, auch wenn sie nich geholfen hat
 
Zurück