# JSF: managed properties bereits im Konstruktor?



## schlumsch (26. Jan 2009)

Hallo allerseits,

eine kurze Frage zum Thema managed-beans bzw. manages properties.
Ich habe 2 beans, zwischen denen ich ein Property "manage", sieht dann so aus:



```
<managed-bean>
		<managed-bean-name>bean2</managed-bean-name>
		<managed-bean-class>e2e.ta......Bean2</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
			<managed-property>
				<property-name>userName</property-name>
				<value>#{bean1.userName}</value>
			</managed-property>		
	</managed-bean>
```

Nun mache ich sowohl im Konstruktor vom bean2, als auch in den gettern und settern von bean2.userName
ein sysout auf diese Variable. Resultat: im Konstruktor ist userName leer, der setter wird danach korrekt aufgerufen und
der Benutzername ebenfalls übergeben. 

Soweit ok, aber (wie) kann ich bereits im Konstruktor von bean2 auf den
Benutzernamen zugreifen?

Thx


----------



## Guest (6. Feb 2009)

Gar nicht. Soweit ich weiß unterstützt der JSF-Standard nur Setter Injection. Du könntest z.B. einen Container wie Spring verwenden, um diesem die Verwaltung der Beans zu überlassen. Vielleicht ist es aber auch bei Dir ein grundsätzliches Design-Problem, wenn die Setter Injection nicht reicht.

Gruß


----------



## schlumsch (10. Feb 2009)

Dank dir. Mir reicht schon "Setter Injection", das war mehr so eine prinzipielle Frage ohne zwingend notwendige Umsetzung u know


----------



## Matthew52 (6. Mai 2011)

Das ist bestimmt kein Designproblem, das kommt sehr haeufig vor. Dafuer kann man am besten die Annotation 
@javax.annotation.PostConstruct an einer Methode verwenden, die dann nach der Konstruktion und auch nach der Setterinjection aufgerufen wird. Regeln wie die Methode aussehen muss, stehen in der API DOC. Meisten sowas wie das hier:

@PostConstruct
public void init()
{
...
}


----------

