Faces response aus einem anderen Servlet heraus rendern

jule37

Aktives Mitglied
Hallo liebe Leute,

ich habe ein selbstgeschriebenes Servlet innerhalb meiner JSF Applikation, das in seiner ServletResponse die Ausgabe vom FacesServlet senden soll.

Ich habe es jetzt erfolgreich geschafft, den FacesContext in dieser nicht-Faces-Umgebung zu erstellen. Allerdings funktioniert der Aufruf facesContext.renderResponse() nicht. Alle EL Ausdrücke werden korrekt ausgewertet, ManagedBeans wie angefordert instantiiert, jedoch wird die Response einfach nicht gerendert. Ich erhalte eine weiße Seite; es fliegt keine Exception.

Mit folgendem Code verschaffe ich mir Zugriff auf den FacesContext:
Java:
public static FacesContext getFacesContext(final ServletRequest request,
			final ServletResponse response) {

	FacesContext facesContext = FacesContext.getCurrentInstance();
		
	if (facesContext != null)
		return facesContext;

	FacesContextFactory contextFactory =
		(FacesContextFactory)FactoryFinder.getFactory(
				FactoryFinder.FACES_CONTEXT_FACTORY);
	LifecycleFactory lifecycleFactory =
		(LifecycleFactory)FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
	Lifecycle lifecycle =
		lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
		ServletContext servletContext =
		((HttpServletRequest)request).getSession().getServletContext();
	facesContext = contextFactory.getFacesContext(servletContext,
			request, response, lifecycle);
	
	if(facesContext.getViewRoot() == null)
		facesContext.setViewRoot(new UIViewRoot());
		return facesContext;
}

Das scheint zu funktionieren. Die Navigation geschieht auf folgende Weise:

Java:
final NavigationHandler nav =
        facesContext.getApplication().getNavigationHandler();

nav.handleNavigation(facesContext, null, "viewId");
facesContext.renderResponse();

Dieser Aufruf hat an einer Stelle, wo ich ihn von innerhalb des Faces lifecycles aus (also aus einer Facelets Seite) funktioniert. Aus meinem Servlet heraus scheint dies nicht zu funktionieren. Hab ich irgendwas wichtiges vergessen? Wäre toll, wenn mir jemand einen Tip geben kann. Diese Problematik ist echt schlecht dokumentiert.

Gruß & Danke
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I JSF JSF, Tomcat, Server Faces und maven Web Tier 3
feinperligekohlensaeure JSF JSF + Tomcat 9 | HTTP Status 404 |(com.sun.faces.config.ConfigureListener?) Web Tier 1
R com.sun.faces.context.SessionMap.put(key, value) Web Tier 2
A Faces Context nicht mehr erreichbar nach Servlet Aufruf Web Tier 1
M System-Event in der faces-config.xml klappt nicht Web Tier 15
J Navigationsregeln in faces-config Web Tier 3
J JSF String cannot be cast to javax.faces.model.SelectItem Web Tier 12
F JSF (JavaServer Faces) - Spaltengestaltung: selectOneRadio Feat. selectItem Web Tier 6
F ADF Faces & Apache Trinidad Web Tier 5
G JSF javax.faces.bean Web Tier 2
I Rich Faces nur mit JBoss oder auch Tomcat? Web Tier 7
G "JavaServer Faces: The Complete Reference" empfehl Web Tier 2
G Undefined component type javax.faces.ViewRoot Web Tier 3
G WARNUNG: JSF1059: WARNING! The com.sun.faces.verifyObjects Web Tier 2
G Validierung mit Java Server Faces Web Tier 4
P HTTP Response 400 Web Tier 1
M XML http request zeigt die eigene Website als response Web Tier 2
B JSF Mojarra 2.1.5: java.lang.IllegalStateException: Cannot create a session after the response has been Web Tier 7
B statische Html Seite als response erhalten (Servlet) Web Tier 3
J response HTML verwenden Web Tier 2
S Response auswerten Web Tier 6
neonfly JSON response undefined Web Tier 5
J location response-header? Browser-Back-Button "deaktivieren" Web Tier 9
Z Servlet Response HTTP-Status 200 wird nicht übertragen Web Tier 3
pkm Probleme mit einem AJAX-Call in einem dynamischen Webprojekt Web Tier 15
A Dojo: Tab deaktivieren wenn in einem Listenfeld ein bestimmter Wert steht Web Tier 3
J Suche nach einem Webframework Web Tier 5
S Primefaces commandButton in einem Dialog/Form/PanelGrid führt actionListener nicht aus Web Tier 4
S CDI: Bean aus einem anderen jar Web Tier 3
M JSF Zugriff auf mehrere Formulareinträge in einem Validator Web Tier 9
E Servlet mit einem Link aufrufen? Web Tier 13
P Ist es möglich einen Returnwert einem httpRequest zu übergeben Web Tier 3
H Nochmals Tag in einem Tag Web Tier 3
H Tag in einem anderen Tag Web Tier 2
S Verlinkung von JSF-Seiten in einem gecshützten Bereich Web Tier 2
T In einem Struts Tag Werte mit Java einfügen Web Tier 2
G WebSeite hinter einem Login auslesen Web Tier 8
U Grafik aus einem Datenmodell generieren Web Tier 2
G Javascriptfunction aus einem Sucess-path aufrufen Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben