# NullPointerException in ManagedBean?



## sicLotus (15. Nov 2011)

Hallo,

ich beschäftige mich derzeit mit JSF und habe ein kleines Projekt angelegt und finde den Fehler einfach nicht.

Ich habe eine xhtml / jsf in der folgendes steht:

```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.01 Transitional//EN"
"http://www.w3.org/TR/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:body>
<h1>Registrierung</h1>
<h:form>
<h:outputLabel for="email">E-Mail</h:outputLabel>
<h:inputText id="email" value="#{register.email}"/>
<h:outputLabel for="password">Passwort</h:outputLabel>
<h:inputSecret id="password" value="#{register.password}"/>
<h:commandButton value="Registrieren" action="#{registerBean.registerAccount}" />
</h:form>
</h:body>
</html>
```

Jetzt habe ich einen Controller, in dem steht: (Fehler hier in Zeile 21)

```
package music.manager;
import java.io.Serializable;
import javax.faces.bean.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;
import music.data.Register;

@Named
@RequestScoped
public class RegisterBean implements Serializable {
	private static final long serialVersionUID = 1L;
	

	@Inject
	private Register register;
	
	public String registerAccount() {
		System.out.println("register new account...");
		
		//create new user here
		System.out.println("email="+register.getEmail());
		return "/registerSuccess.xhtml";
	}
}
```

Dieser Injeziert die Data "register.java":

```
package music.data;
import java.io.Serializable;
import javax.faces.bean.SessionScoped;
import javax.inject.Named;
import javax.validation.constraints.Size;

@Named
@SessionScoped
public class Register implements Serializable {

	private static final long serialVersionUID = 1L;

	@Size(min=3, message="Email muss mindestens drei Zeichen besitzen")
	private String email;
	
	@Size(min=3, message="Passwort muss mindestens drei Zeichen besitzen")
	private String password;

	//+getter und setter, lass ich hier einfach mal weg
}
```

In der ManagedBean (Zeile 21: register.getEmail()) wirft er folgende Exception:
Caused by: java.lang.NullPointerException
	at music.manager.RegisterBean.registerAccount(RegisterBean.java:24)

Weiß einer was ich falsch gemacht habe?


----------



## OliverZ (16. Nov 2011)

Vermutlich musst du aus
private Register register;
ein
private Register register = new Register();
machen.
Und dann halt noch getter und setter.

Gruss


----------



## waldek87 (16. Nov 2011)

Es scheint so, dass deine RegisterBean nicht richtig injeziert wird. 

Warum möchtest du denn eine Session-Scoped-Bean in eine Request-Scoped-Bean injezieren?


----------



## sicLotus (16. Nov 2011)

waldek87 hat gesagt.:


> Es scheint so, dass deine RegisterBean nicht richtig injeziert wird.
> 
> Warum möchtest du denn eine Session-Scoped-Bean in eine Request-Scoped-Bean injezieren?



Darüber habe ich mir ehrlich gesagt noch gar nicht so sehr gedanken drüber gemacht... Das hab ich in einem Beispiel gefunden und einfach übernommen:rtfm: Sollten die beiden Beans lieber nur Request-Scoped sein? Kann der Fehler daran liegen?


----------



## waldek87 (17. Nov 2011)

Nein das glaube ich nicht, dass es daran liegt. Es würde höchstens fehlerhaft funktionieren.
Was für einen Server benutzt du denn?


----------

