JSF2: Managed bean aus anderer Dependency

S

Sym

Gast
Hallo,

vielleicht könnt ihr mir helfen. In meinem JSF2-Maven-Projekt habe ich eine Abhängigkeit auf ein anderes Projekt, welches Managed-Beans beinhaltet (mit entsprechender Annotation).

Leider sind diese Beans null, wenn ich sie verwenden möchte. Sie werden im Context nicht gefunden.

Was muss ich tun, um die Beans erreichbar zu machen?

Gruß Sym
 

JimPanse

Bekanntes Mitglied
Verstehe ich nicht? Sind das 2 Web-Projekte?

Wenn ja -> Der eine Servlet-Kontext hat mit dem anderen nichts zu tun -> d.h. die Beans sind an verschiedene Kontexte gebunden und werden darüber verwaltet.

Was hast du genau vor? Willst du den Code der Klasse verwenden dann -> abstrakte Oberklasse und für die einzelnen Web-Projekt eigenständige Bean zu deklarieren die von dieser Klasse erben...

Wenn du möchtest das die Projekte miteinander interagieren sollen (Datenaustausch, etc) dann entweder über die Datenhaltung, Web-Services oder du versuchst es mit Portlets...
 
S

Sym

Gast
Nein, das ist nur ein Web-Projekt.

Ich habe allerdings ein anderes Maven-Project, welches ebenfalls Managed-Beans enthält. Dieses Maven-Projekt wird im Web-Projekt referenziert und die Klassen sind natürlich auffindbar. Allerdings sind die Beans nicht im FacesContext enthalten.

Meine Frage ist, wie ich die Klassen in den Context bekomme.
 

JimPanse

Bekanntes Mitglied
ok.

dann würde ich es mal auf die 'alte' Weise versuchen:

Code:
<faces-config>
....
<managed-bean>
     <managed-bean-name> <bean-name> </managed-bean-name>
     <managed-bean-class> <package.classname> </managed-bean-class>
     <managed-bean-scope> <scope [none,request,session,application]> </managed-bean-scope>
</managed-bean>

...
</faces-config>

Das sollte auf jedenfall funktionieren!

PS: Ich weiß nicht 100% ob die Dependency-Injection Klassen aus einem eigenständigen Projekt Archiv ausgewertet. Ich vermute mal das nur die Klassen, die im dem WEB-INF/classes Verzeichnis liegen, ausgewertet werden...
Schon mal in der Spec nachgeschaut -> The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 314
 
S

Sym

Gast
Ja, nachgeschaut habe ich da schon. Aber wenn es was dazu gibt, habe ich das leider übersehen.

Natürlich könnte ich den "alten Weg" gehen. Allerdings ist das ziemlich umständlich - vor allem, wenn man das für alle Beans machen muss.

Ich könnte natürlich auch Alle Beans aus dem jeweiligen Packages über die Annotation finden und selbst in den Context schreiben. Aber ich hoffe, dass es dafür einen besseren (oder richtigen) Weg gibt.
 

JimPanse

Bekanntes Mitglied
Es gibt eine Möglichkeit bzw. eine weitere "old-school" Variante

Code:
public class <Bean> {

.....code


public static final <Bean> getCurrent<Bean>(
			FacesContext context) {
		if (context == null) {
			context = FacesContext.getCurrentInstance();
		}
		<Bean> bean= (<Bean>) context
				.getApplication().createValueBinding("#{beanname}")
				.getValue(context);

		if (bean == null) {
			bean = new <Bean>();
			context.getApplication().createValueBinding("#{beanname}")
					.setValue(context, bean );
		}
		return bean ;
	}

Mit Übergabe des FacesContext wird die Bean entweder initialisiert wenn sie noch nicht vorhanden ist und falls eine Instanz der Bean unter "beanname" vorhandenen ist wird die aktuelle Instanz zurück gegeben...
 
S

Sym

Gast
Danke,

irgendwie stand ich an dem Tag auf dem Schlauch und habe den Setter übersehen...

Naja, damit klappt es dann natürlich.

Man nehme:

- ein eigenes Servlet
- Suche alle Beans, die es zu initialisieren gilt (am leichtesten über die Annotation programmatisch finden)
- Setze die Beans in den Context

Und dann klappt es auch mit dem Nachbarn. Das bedeutet, das Servlet muss nur noch in der web.xml angegeben werden und alle Beans sind erreichbar.

Gruß Sym
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Namen von URL-Parametern austauschen bei JSF2 Web Tier 2
S JSF JSF2 application in der Entwicklungsumgebung neustarten Web Tier 4
J JSF2+primefaces? Web Tier 20
S JSF JSF2 Validierung Sicherheit Web Tier 6
G JSF JSF2 und JAAS Web Tier 8
J JSF JSF2.0 template wird nicht gerendert!? Web Tier 2
T SVG für JSF2 Web Tier 8
R UIGraphic jsf2.0 Web Tier 2
T <f:ajax> in JSF2.0 Komponente ein- und ausblenden Web Tier 4
T JSF2 Authentifizierung Web Tier 3
C Eclipse mit JSF2.0 Web Tier 7
W JSF Probleme mit Zugriff zur Managed Bean Web Tier 11
R get-methode der Managed-Bean wird immer 3 mal ausgeführt Web Tier 4
M viele Objekte des Managed Bean Web Tier 3
X Managed Bean Scope zwischen Request und Session gesucht Web Tier 6
H Managed Bean Aufruf auf Stack legen Web Tier 10
S JSF Best practices - Managed beans Web Tier 9
J Managed bean und javascript kommunikation (JSF 2) Web Tier 2
D Kommunikation zwischen JSF Managed Beans Web Tier 11
K Anfängerfrage in JSF: <h:inputText> aus Managed Bean ansprechen Web Tier 6
S Managed bean nicht initialisiert Web Tier 2
A JSF+Glassfish: Probleme mit Managed Bean Web Tier 2
S JSF: Frage wegen managed-bean Web Tier 3
S JSF: managed properties bereits im Konstruktor? Web Tier 3
G Eine Instanz pro Managed Bean? Web Tier 2
6 JSF Form Attribute nicht an Bean übergeben Web Tier 2
G HTML Fragment in Bean erzeugen? Web Tier 1
F JSF Bean funktioniert nicht immer.. Web Tier 3
I CSS von Client -> an Bean senden Web Tier 0
H JSF jsf/sessionScoped Bean - Bilder (jpg) werden nicht richtig dargestellt Web Tier 1
S Java Bean und Java Servlet Web Tier 2
G jsf bean erstellen die mir die aktuelle uhrzeit ausgibt als xhtml Web Tier 5
S [JSF] Zugriff auf Bean (Eclispe,JBoss) Web Tier 12
P JSF Prob mit xhtml / Bean / JS Web Tier 6
J JSF Initialisierung einer ApplicationScoped Bean Web Tier 2
B Berechnen und Anzeigen von Formeln aus der Chemie und Physik mit JSP und Bean Web Tier 14
H Bean-Objekte aus XML erstellen Web Tier 2
L expression language Bean && Bean Web Tier 3
C JSF Methoden in Backing-Bean als JSF-Property Web Tier 3
P JSF Merkwürdiges Verhalten einer Bean Web Tier 11
S CDI: Bean aus einem anderen jar Web Tier 3
D JSF EL #{not null bean.property} Parse exception Web Tier 2
T Seam-Komponenten oder Java Bean soll direkt nach Appserver-Start "leben" Web Tier 4
B JSF Servlectexception: Verwalteter Bean "..bean" kann nicht erstellt werden Web Tier 2
G JSF Bean Vererbung Web Tier 5
J Validieren abhängiger Felder mit JEE6/Bean validation Web Tier 33
F Leere Bean? Web Tier 7
W MVC mit Bean, JSP und Servlet Web Tier 6
S Style bei fehlerhafter Eingabe (Bean Validation) ändern Web Tier 2
P JSP: Liste in Bean über Session aufbauen Web Tier 6
S Bean Validation (JSF 2.0) funktioniert nicht. Web Tier 4
V Vector aus Bean "holen" / JSP Web Tier 3
B JSF session bean mit worker thread updaten Web Tier 7
K bean methode von jslt aufrufen Web Tier 7
I Eine Bean von einer anderen Bean aufrufen Web Tier 2
G JSF javax.faces.bean Web Tier 2
E Methode einer Bean aus anderer Bean aufrufen Web Tier 10
S [SelectItems value(herkunft bean)] in [UI:repeat] lädt daten nicht neu nach Web Tier 3
N MessageResources von Struts in Form-Bean Web Tier 4
N java bean in eclipse Web Tier 6
A JSF SelectOneMenu mit Werten aus Bean vorbelegen Web Tier 2
pusteblume Mehrere Objekte einer Bean Web Tier 10
M Problem mit JSP und Bean Web Tier 2
O 2 Fragen zu JSP und Bean Web Tier 4
E value übergabe an bean! aber wie? Web Tier 3
F Datei von bean aus laden Web Tier 3
N JSF kann Bean nicht finden! Web Tier 7
H JSF - Bean (scope session) - Verfallsdatum? Web Tier 3
G Mit JSTL Rückgabe von Bean Methode ausgeben Web Tier 3
D ResultSet aus Bean an JSP übergeben Web Tier 11
M JSF - Bean aus SessionScope direkt im JSF Code auslesen Web Tier 1

Ähnliche Java Themen

Neue Themen


Oben