Using MyFaces 2.2.3

The intent is for the contents of the <ui:define> variable page_title to appear 
both in the browser title bar and in the page’s content header area while using 
a common template across many pages.  The content header area is displayed in 
the <body> of the page and is there to give each page a consistent look.

In the example below, “My Page1 Title” appears as the title of the page1.jsp, 
but not in the header content of the page.

Why does the <ui:define> variable page_title evaluate to blank/null in includes 
pages?

Is there a better way to accomplish the intended behavior?


***
* Page1.xhtml
***
<?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";>
<html xmlns="http://www.w3.org/1999/xhtml";
        xmlns:f="http://java.sun.com/jsf/core";
        xmlns:h="http://java.sun.com/jsf/html";
        xmlns:ui="http://java.sun.com/jsf/facelets";>
<h:body>
        <ui:composition template="/template/commonLayout.xhtml">
                <ui:define name=“page_title”>My Page1 Title</ui:define>
                <ui:define name=“content">
                        <f:view transient=“true”>
                          <h1>Page 1</h1>
                        </f:view>
                </ui:define>

        </ui:composition>
</h:body>
</html>



***
* commonLayout.xhtml
***
<?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";>
<html xmlns="http://www.w3.org/1999/xhtml";
        xmlns:h="http://java.sun.com/jsf/html";
        xmlns:ui="http://java.sun.com/jsf/facelets";>

<h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <h:outputStylesheet library="css" name="default.css" />
        <h:outputStylesheet library="css" name="cssLayout.css" />
        <title><ui:insert name="page_title" /></title>
</h:head>

<h:body>
        <ui:debug />
        <div id="page">
                <div id="top">
                        <ui:insert name="header">
                                <ui:include src="/template/commonHeader.xhtml"/>
                        </ui:insert>
                </div>
                <div>
                        <div id="left">
                                <ui:insert name="menu">
                                        <ui:include 
src="/template/commonMenuLeft.xhtml" />
                                </ui:insert>
                        </div>

                        <div id="content">
                                <ui:insert name="content">
                                        <ui:include 
src="/template/commonContent.xhtml"/>
                                </ui:insert>
                        </div>
                        <ui:debug></ui:debug>
                </div>
                <div id="bottom">
                        <ui:insert name="footer">
                                <ui:include src="/template/commonFooter.xhtml" 
/>
                        </ui:insert>
                </div>

        </div>
</h:body>
</html>

***
* commonHeader.xhtml
***
<?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";>
<html xmlns="http://www.w3.org/1999/xhtml";
        xmlns:ui="http://java.sun.com/jsf/facelets";>
<body>
        <ui:component>
                <h1 style="text-align: center; color: black; background-color: 
white;">
                        <ui:insert name="page_title" />
                </h1>
        </ui:component>
</body>
</html>


Paul Spencer

Reply via email to