JSF Templating

Quero59

Mitglied
Hallo zusammen, ich bin noch ziemlich neu im Thema JSF. Speziell beim Thema Templating und Re-Use funktioniert nichts bei mir.

Ich habe dutzende simple Beispiele ausprobiert wie http://www.jsfcentral.com/articles/facelets_3.html - kein <ui:insert> fügt etwas ein.

Irgendetwas grundsätzliches fehlt mir da doch, ein Eintrag in faces-config.xml oder so?

Auf Verzeichnisangaben wie "template.xhtml" bzw. "\template.xhtml" hab ich eigentlich geachtet.

Ich arbeite mit Jdeveloper 10.1.3.3, Webserver ist dessen embedded OC4J Server.

Schönen Gruß
 
also eigentlich fügt <ui:define> inhalt in eine Seite ein.
Also das vorgehen ist folgendes:

Mach dir ein Template.xhtml
Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>TITEL</title>
</head>
<body>
    <div id="navigation">
   		<ui:include src="navigation.xhtml"/>
    </div>
  	<div id="center">  				
		<ui:insert name="content"></ui:insert>		
	</div>
	<div id="foot">
		<ui:include src="footer.xhtml"/>
	</div>
</body>
</html>

damit hast du ein Vorlage erstellt, die dir für jede Seite die das Template benutzt immer die Navigation und den Footer einfügt (über das <ui:include> - Tag), während der eigentliche Inhalt (content) dynamisch befüllt werden kann.
Um jetzt eine Seite zu erstellen muss du eine neue xhtml mit folgendem Aussehen erstellen

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ui:composition 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"
	xmlns:tr="http://myfaces.apache.org/trinidad"
	template="template.xhtml">

	<ui:define name="content">
		<tr:form>
                 <!-- HIER INHALT EINFÜGEN -->
               	</tr:form>
	</ui:define>
</ui:composition>

Wichtig zunächst <ui:composition>, damit gibst du an, welches Template benutzt werden soll.
über das <ui:define> - Tag greifst du auf den im Template definierten Platzhalter zurück und ersetzt diesen durch deinen gewünschten Inhalt.
Hoffe das hilft dir weiter,
Grüße,
Clash
 
Danke dir, aber das war leider nur ein weiteres Beispiel, das bei mir nicht funktioniert.

Ich warte jetzt mal, bis ich unseren hochbezahlten externen Experten mal zu greifen bekomme, um zu sehen, was mit meinem System los ist.
 
Zurück