无法替换或定义命名的ui:insert block

时间:2016-11-16 09:53:41

标签: jsf

我刚刚了解到我可以创建一个主模板,我可以使用xhtmljsfui:insert替换不同的其他ui:define ui:include src页面我在网上进行了一些研究并尝试显示合并的页面。

但是,我无法使用其他内容定义命名的ui:insert 内容块(我想在用户访问时使用register.xhtml页面。注册页面)

的template.xhtml

<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>
        <h:outputStylesheet name="css/bootstrap.css" />
        <h:outputStylesheet name="css/font-awesome.css"/>
        <h:outputStylesheet name="css/mywebsite.css"/>
        <h:outputScript name="js/jquery-3.1.1.js"/>
        <h:outputScript name="js/bootstrap.js"/>
    </h:head>    

    <h:body>

        <div id="page">
            <div id="header">
                <ui:insert name="header">
                    <ui:include src="header.xhtml"/>
                </ui:insert>
            </div>

            <div id="content">
                <!--content container-->
                <ui:insert name="content">
                    <ui:include src="content.xhtml" />
                </ui:insert>
            </div>

            <div id="footer">
                <!--footer container-->
                <ui:insert name="footer">
                    <ui:include src="footer.xhtml" />
                </ui:insert>
            </div>
        </div>

    </h:body>

</html>

header.xhtml

<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
    <h1>Default Header</h1>
</ui:composition>

content.xhtml

<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    >
    <h1>Default Content</h1>
</ui:composition>

footer.xhtml

<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
    <h1>Default Footer</h1>
</ui:composition>

register.xhtml

<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
    <h1>I AM REGISTER</h1>
</ui:composition>

我希望能够做的是在用户转到register.xhtml时将{strong>内容块替换为localhost:8080/mywebsite/register.xhtml

我想替换default content div。仅当用户转到注册页面(localhost:8080/mywebsite/register.xhtml),但保留标题页脚

enter image description here

我希望你能提供帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

您的register.xhtml应该是这样的:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
template="/WEB-INF/templates/template.xhtml">
<ui:define name="content">
    <h1>I AM REGISTER</h1>
</ui:define></ui:composition>

您必须在template="/WEB-INF/templates/template.xhtml"标记中添加ui:composition,并将实际内容覆盖为

<ui:define name="content">
    <h1>I AM REGISTER</h1>
</ui:define>