JSF模板,在每个页面中包含一段HTML



我不知道如何在我的web应用程序的每个页面中包含一段HTML(比如说一点table(。

假设这是我想包括的表格,所以我做了一个模板:

<?xml version ... ?>
<!DOCTYPE ...">
<html xmlns="... all the required namespaces ...">
    <head>
    </head>
    <body>
        <table>
            <tr><td>first</td><td>second</td><td>third</td><td>...</td></tr>
        </table>
    </body>
</html>

然后我有了使用它的代码:

<?xml version ...?>
<!DOCTYPE ...">
<html xmlns="... all required namespaces ...">
    <body>
        <h3>Will this be displayed?</h3>
        <ui:composition template="tableTemplate.xhtml">
            <h4>Will this?</h4>
        </ui:composition>
    </body>
</html>

我在浏览器上看到的页面是:

<html xmlns ...>
    <head>
    </head>
    <body>
         <table>
             <tr><td>first</td><td>second</td><td>third</td><td>...</td></tr>
         </table>
    </body>
</html>

所以桌子在那里,但其他的都不见了!

在主模板中,您需要使用<ui:insert>来声明将插入模板定义的位置。

template.xhtml

<!DOCTYPE html>
<html lang="en"
    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:head>
        <title><ui:insert name="title">Default title</ui:insert></title>
    </h:head>
    <h:body>
        <ui:insert name="body">Default body</ui:insert>
        <table>
            <tr><td>first</td><td>second</td><td>third</td><td>...</td></tr>
        </table>
    </h:body>
</html>

在模板客户端中,您需要使用<ui:define>来定义要插入到模板中声明的位置的模板定义。

page.xhtml

<ui:composition template="template.xhtml"
    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">
    <ui:define name="title">
        Define your page title here
    </ui:define>
    <ui:define name="body">
        <h3>Define your body content here</h3>
        <p>Blah blah</p>
    </ui:define>
</ui:composition>

<ui:composition>周围不需要HTML。无论如何,它们都会被忽略。只是不要在那里放任何HTML,这只会浪费空间,让你自己感到困惑。

当您在浏览器中打开page.xhtml时,以下内容将出现在渲染输出中:

<!DOCTYPE html>
<html lang="en"
    xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Define your page title here</title>
    </head>
    <body>
        <h3>Define your body content here</h3>
        <p>Blah blah</p>
        <table>
            <tr><td>first</td><td>second</td><td>third</td><td>...</td></tr>
        </table>
    </body>
</html>

TRY

<ui:include src="tableTemplate.xhtml"/>

以及在您的表格Template.xhtml 中

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets">
    put your template here
</ui:composition>

相关内容

  • 没有找到相关文章

最新更新