Hakan: Dependency Injection

Beitrag lesen

Hallo Leute,

ich habe wieder mal ein Problem und ich hoffe ihr könnt mir da wieder weiterhelfen....weil es gewohnt bin, dass man mir  hier helfen kann.
Ich kann euch aber versichern, ich habe vorher im Internet und in div. Büchern versucht viel darüber heraus zu finden!

Problem: Dependency Injection

Ich habe zwei Klassen, ein LoginHandler und ein UserBean

Der Loginhander erhält username und passwort über eine Eingabemaske und prüft in der DB, ob es diesen User gibt. Wenn ja, wird die Id des Users in dem Attribut this.id gespeichert.

@ManagedBean(name = "loginHandlerBean")
@SessionScoped
public class LoginHandler{
private int id;
private String username;
private String password;

//Geter- and Setter-Methods  
....  
  
public String checkLogin(){  
  
	// In der DB wird anhand von username  

// und password der User gesucht
// und die id zurück gegeben.
this.id = checkUserDB(username, password);

	if(this.id != null){  
		return "success";  
	}else{  
		return "fail";  
	}  
}  

}

In einer anderen JSP-Seite wird dann auf die UserBean zu gegriffen. Daher hab ich per DI (@Managed Property) die userid aus dem LoginHandler in die UserBean übertragen.

@ManagedBean(name = "userBean")
@SessionScoped
public class User{

@ManagedProperty(value = "#{loginHandlerBean.id}")  
private int userid;  

private UserAttr userAttributes = new UserAttr();  

//Getter- and Setter-Methods  
....  

//Constructor  
public User(){  
	system.out.println("1. Userid is: "+this.userid);  
	  
	// Aus der DB die UserAttribute anhand von userid ermitteln  
	this.userAttributes = getUserAttributsfromDB(this.userid);  
}  
  
public void printUserid(){  
	system.out.println("1. Userid is: "+this.userid);  
}  

private UserAttr getUserAttributesfromDB(int pUserId){  
	....  
}  

}

Dies funktioniert auch, soweit ich auf der neuen JSP-Seite (Success-Seite) die Methode printUserid() aufrufe. Aber innerhalb des Konstruktors von UserBean steht mir die userid (aus DI) nicht zur Verfügung.

Innerhalb des Konstrukturos der Classe User erhaltte ich 0 und beim Aufruf der Methode printUserid() erhalte ich die richtige id.

Ich benötige aber innerhalb des Konstruktors die userid, damit ich damit in der DB weitere Daten ermitteln und in die Attribute speichern kann.

Mach ich hier grundlegend was falsch oder wie genau müsste ich eignetlich da vorgehen?

Vielen Dank schon mal im voraus!

Gruß, HAkan