简体   繁体   中英

Problem including another XHTML page in an XHTML page

I am a beginner programming Java and I am doing a project using primefaces. I want to include another XHTML page in an XHTML page. The include page is in /WEB-INF/facelets/include.xhtml (It has some data from a Managed Bean)

In my "page.xhtml", at first, I put this line inside <ui:define name="content">:

<ui:include src="WEB-INF/facelets/include.xhtml" /> 

But, it does not work.

Later, I tried to do this inside <ui:define name="content">

<ui:include src="WEB-INF/facelets/include.xhtml">
    <ui:param name="fullName" value="#{identityInformationBean.fullName}" />
</ui:include>

And in the "include.xhtml":

<h:outputText
    rendered="#{fullName!=null}"
    value="#{fullName}" />

But, it does not work too. Nevertheless, if I do this:

On "page.xhtml"

<ui:include src="WEB-INF/facelets/include.xhtml">
    <ui:param name="fullName" value="Helen" />
</ui:include>

The "include.xhtml" receives the information correctly.

I'd tried to registering the include file as a tagfile, as suggest here How to include another XHTML in XHTML using JSF 2.0 Facelets? But, it does not work.

Any idea to solve this problem? Thanks!

This is a piece of code from "include.xhtml":

 <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jstl/core" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui"> <h:outputText rendered="#{identityInformationBean.fullName!=null}" value="#{identityInformationBean.fullName}" /> </ui:composition>

This is a piece of code from "page.xhtml":

 <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jstl/core" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" template="templates/generaltemplate.xhtml"> <ui:define name="content"> <h2> <h:outputText value="Identity Information"/> </h2> </ui:define> </ui:composition>

I'm not sure why you need ui:param . Think of the include file as just saving you the trouble of typing that included code into all the pages that might use it. You don't need to pass it a parameter.

What about using a single line of code: <ui:include src="WEB-INF/facelets/include.xhtml"/> And the include file would have <h:outputText value="#{identityInformationBean.fullName}"/>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM