JSF Verständnisproblem mit den Tags <ui:include> und <ui:define>

alex1511

Mitglied
Hallo zusammen,

ich sitze zur Zeit na meiner ersten Webanwendung. Hierfür verwende ich JSF und Primefaces. Jetzt ist es so, dass ich eine Template-Datei habe. die master.xhtml. Dies funktioniert auch soweit sehr gut.


master.xhtml
HTML:
<!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"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:p="http://primefaces.org/ui"
	xmlns:f="http://java.sun.com/jsf/core">

<f:view contentType="text/html" id="fview">

	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<ui:debug />
	<f:metadata>
		<ui:insert name="metadata" />
	</f:metadata>

	<h:head>

		<p:ajaxStatus onstart="statusDialog.show();"
			onsuccess="statusDialog.hide();" />

		<p:dialog modal="true" widgetVar="statusDialog" showHeader="false"
			draggable="false" closable="false" resizable="false" visible="false"
			position="center" maximizable="false" minimizable="false">
		</p:dialog>

	</h:head>

	<h:body onload="statusDialog.hide();">

		<p:layout fullPage="true" resizeTitle="resize"
			style="background-color:#FFFFFF;">
			<p:layoutUnit position="north" size="120" id="north">
				<ui:include src="header.xhtml" />
			</p:layoutUnit>

			<p:layoutUnit position="west" id="west" resizable="false"
				header="#{msg['menu.title']}" style="height:580px;overflow:hidden;"
				size="225">
				<ui:include src="navigation.xhtml" />
			</p:layoutUnit>

			<p:layoutUnit styleClass="layoutUnitCenter" position="center">
				<h:form id="mainForm">
					<p:messages autoUpdate="true" id="msgs" showDetail="true"
						showSummary="true" />
					<p:menubar id="mainMenu">
						<p:menuitem value="Startseite" outcome="index" />
						<p:submenu label="Modul">
							<p:menuitem value="Modul 1" outcome="index" />
							<p:menuitem value="Modul 2" outcome="index" />
							<p:menuitem value="Modul 3" outcome="index" />
						</p:submenu>
						<p:menuitem value="Kontakt" outcome="index" />
						<p:menuitem value="Impressum" outcome="index" />
						<p:menuitem value="DB-Dummie" outcome="index" />
					</p:menubar>
					<ui:insert name="content">
							[COLOR="Sienna"]Standardtext[/COLOR]
					</ui:insert>
				</h:form>
			</p:layoutUnit>

			<p:layoutUnit position="south" resizable="true" id="south">
				<ui:include src="footer.xhtml" />
			</p:layoutUnit>
		</p:layout>
	</h:body>

</f:view>
</html>

die Textzeile "Standardtext" soll nun durch "überschrieben" aus der index.xhtml überschrieben werden. Wird sie aber nicht und genau an dieser Stelle komme ich nicht weiter. Kann mir das leider nicht erklären.

index.xhtml
HTML:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui" template="/template/master.xhtml">
	<h:head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<title>ExperienceEngineDummie</title>
	</h:head>

	<h:body>

		<ui:define name="content">
		[COLOR="Sienna"]überschrieben[/COLOR]
				
		</ui:define>

	</h:body>

</ui:composition>

Wenn ich das richtig verstanden habe, dann definiere ich doch mit dem tag <ui:include name="Test123"> den Bereich im Template, den ich mittels <ui:define name="Test123"> bei Aufruf einer speziellen Seite überschreiben möchte?

würde mich sehr über eure Hilfe freuen.

Gruß, Alex
 
Zuletzt bearbeitet:

stg

Top Contributor
Die Body-Tags sind hier falsch. Deine index.xhtml sollte in etwa so aussehen:

HTML:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui" template="/template/master.xhtml">

	<ui:define name="content">
	[COLOR="Sienna"]überschrieben[/COLOR]				
	</ui:define>

</ui:composition>
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben