jsp:useBean

Status
Nicht offen für weitere Antworten.
I

ivan_7

Gast
hallo allerseits

ich habe probleme mit dem erzeugen einer bean in der jsp-seite. hier der auszug aus meiner jsp-seite:
Code:
<body>
	<jsp:useBean id="person" class="beans.Person" scope="request"/>
	<jsp:setProperty name="person" property="*" />
	

	<h2 align="center">Willkommen</h2>
	<hr width="40%" align="center" />
	<div align="center">
		<form action="/pers_app/PersonenController" method="get">
			<table align="center" cellpadding="3">
				<tr>
					<td align="right">Name:</td>
					<td><input type="text" name="name" size="32" />
				</tr>
				<tr>
					<td align="right">Vorname:</td>
					<td><input type="text" name="vorname" size="12" />
				</tr>
				<tr>
					<td align="right"><input type="reset" value="Reset"/></td>
					<td><input type="submit" value="Senden"/></td>
				</tr>
			</table>
		</form>
	</div>
	<hr width="40%" align="center" />
</body>
die bean beans.Person hat zwei eigenschaften: name und vorname und entsprechende set- und get-methoden (den standardkonstruktor auch).

wenn ich im PersonenController-Servlet die Bean auslesen möchte, bekomme ich immer null:

Code:
Person person = (Person)request.getAttribute("person");

icht hätte gedacht, dass die bean erzeugt wird und mit dem absenden des formulars die werte für name und vorname in die bean-eigenschaften übernommen werden. ist das den nicht so? und, wann wird dann die bean erzeugt?


danke
 
I

ivan_7

Gast
nun, ich habe jetzt scope auf session geändert:

Code:
<jsp:useBean id="person" class="beans.Person" scope="session"/>

wenn ich im servlet auf das bean zugreife (über session), dann ist das bean vorhanden. aber, es würde mich schon interessieren, was mit der request-scope falsch ist? liegt es daran, dass ich eine weiterleitung (RequestDispatcher) mache?

und noch was. ich habe gemeint, dass alle formularfelder-eingaben automatisch in die bean übernommen werden, wenn ich es wie fogt angebe:

Code:
<jsp:useBean id="person" class="beans.Person" scope="session"/>
<jsp:setProperty name="person" property="*" />

nun, irgendwie klappt das nicht. ich habe das gefühl, dass die bean nach dem absenden des formulars keine übernahme von felderinhalten macht!!! mache ich was falsch, oder ist das wirklich so?

ich habe jetzt ein "work around" gemacht und eine jsp-seite dazwischen geschaltet. diese nimmt einfach die anfrage der erste jsp-seite und leitet sie an servlet (jsp:forward). es funktioniert, das ist einmal gut. aber, ist es wirklich so, dass beim senden vom formular keine übernahme von felderinhalten in die bean-eigenschaften statt findet? oder, gibt es eine bessere, elegantere lösung für die automatische übernahme von daten in die bean, ohne dass man mit ener zwischenseite arbeiten muss?

danke
 

HLX

Top Contributor
Hallo Ivan,

ob es am RequestDispatcher liegt ist eine Frage deiner implementierung, aber ich vermute mal: ja! Der RequestDispatcher kann durchaus die Ursache dafür sein.

Zum <jsp:usebean>:
Deine Bean kann keine Werte enthalten, da es keine Verbindung zwischen deinem HTML-Formular und der Bean gibt. Woher soll das Input-Tag wissen, dass es deine Bean füllen soll. Die Verwendung von <jsp:setProperty> in Verbindung mit einem Formular ist auch mangels Eleganz nicht sehr gebräuchlich.

Mein Tipp:
1. Übertrage das Formular zum Servlet. Dort findest du deine Formularwerte als Request-Parameter (request.getParameter("name). Hier füllst du manuell deine Bean mit diesen Werten.
2. Wenn du willst, das die Eingabeseite beim Wiederaufruf die zuletzt eingegebenen Werte anzeigt, verwende
in der JSP-Seite <jsp:useBean> mit scope="session". Bei den Eingabefeldern benutzt du beim Attribut "value" <jsp:getProperty> um Werte aus der Bean anzuzeigen.
3. Vergiss <jsp:setProperty> - im Servlet kannst du viel besser debuggen
4. Wenn dir die manuelle Übertragung der Werte zu lästig ist, verwende ein Framework (z.B. Apache Struts). Dieses macht das dann für dich
 
I

ivan_7

Gast
danke, HLX!

nun, wollte ich eigentlich den code im servlet reduzieren (keine typumwandlung, kein exception-handlicht usw.). aber, du hast recht. ich werde es halt so machen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I JSP und <jsp:useBean ./> Allgemeines EE 2
J jsp:useBean Frage Allgemeines EE 4

Ähnliche Java Themen

Neue Themen


Oben