# Anwendung Beans für Formulare



## Java.getSkill() (27. Jan 2010)

Hallo,

ich hätte eine Frage bezüglich Beans und Formularen bei JSP.

Welchen Vorteil habe ich und wie wende ich diese an?

Nehmen wir ein Beispiel:

FormularA hat 5 Eingabefelder:
+name
+passwort
+email
+adresse
+lieblingsfarbe

Jetzt erstelle ich mir eine Beanklasse mit jeweils 5 setter/getter methoden zu den 5 Eingabefeldern.

Wie geht es weiter? Wo kommt die Funktionalität zum Vorschein, die ich nicht mit request.getParameter("NameInputfield") habe?

das ganze wird in eine DB abgespeichert


----------



## Atze (27. Jan 2010)

ich seh den vorteil darin, dass du dann gefüllte java-objekte hast, mit denen du arbeiten und denen du zusätzliche funktionen geben kannst.

request.getParameter("NameInputfield")

ist ja nur ein entgegennehmen des wertes auf ner anderen seite, damit ist ja nix passiert. wenn du nur werte von einem formular zum anderen schicken willst, reicht das, aber du willst ja sicherlich auch noch was mit den eigegebenen werten anstellen, oder?

*edit*:
mit persistenz-geschichten a la hibernate kannst du deine beans dann einfacher in die db speichern, fehlen dann nur noch annotations oder n xml mapping (neben dem implementieren und konfigurieren von hibernate, aber das ist ne andere geschichte und hier wohl n bischen übertrieben)


----------



## Java.getSkill() (27. Jan 2010)

Ok, soweit habe ich es auch verstanden 

und ich setze bei der Bean auch die werte mit 

 <jsp:useBean id="abcd" scope="request" class="DataBean" />
  <jsp:setProperty name="abcd" property="*"/>

Kannst du mir jetzt sagen(echten sourcecode)  wie ich in einer weit entfernten .jsp auf genau diese gesetzten Werte wieder zugreifen kann?

wenn ich in dieser weit entfernten .jsp abcd.getJetztAllMeineSetterGetterMethoden()   hernehme, dann kommt "null" raus.


----------



## Atze (27. Jan 2010)

sorry, hat gedauert, war unterwegs 
ja, kann ich, echten sourcecode, gaaanz echt 

die bean:

```
package test;

public class MyBean {
	
	private String myValue = "";

	public String getMyValue() {
		return myValue;
	}

	public void setMyValue(String myValue) {
		this.myValue = myValue;
	}

}
```

jsp Nr.1:

```
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Test</title>
	</head>
	<body>
		<jsp:useBean id="mB" scope="request" class="test.MyBean" />
		<jsp:setProperty name="mB" property="myValue" value="Hurz" />
		<jsp:forward page="next.jsp" />
	</body>
</html>
```

jsp Nr.2:

```
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Next</title>
	</head>
	<body>
		<jsp:useBean id="mB" scope="request" class="test.MyBean" />
		<jsp:getProperty name="mB" property="myValue" />
	</body>
</html>
```

bei dir werden die werte auch wohl nicht gesetz, da dein setProperty tag kein value attribut besitzt.
du hast auch von einer weit entfernten jsp gesprochen, du musst auch auf den scope achten, wenn der auf request steht, ist die bean auch nur so lange gültig wie die anfrage, in der sie hineingelegt wurde

*edit*
auch den kompletten package-pfad im useBean tag class-attribut angeben, fehlt in deinem bsp auch


----------



## Java.getSkill() (29. Jan 2010)

Muss ich denn jedes mal getProperty hernehmen oder kann ich auch etwas mit mB.getMyValue() machen?

und was ist der unterschied zwischen scope: request und session?


----------



## Atze (29. Jan 2010)

mB.getMyValue() wird nicht gehen, aber ${mB.MyValue} sollte gehen

und der unterschied zwischen den scopes request und session ist der, dass im ersten fall die bean nur über den request gültig, im zweiten falle so lange wie die session gültig ist, wie der name schon sagt


----------

