0

我第一次尝试使用 JSF Facelet 模板/Facelet 模板客户端。我正在使用 Netbeans 7.2.1 创建模板和模板客户端。当我运行创建的 JSF 项目并调用http://localhost:8080/jpaweb/template.xhtml时,我可以看到模板样式,但是当我调用客户端模板时,http://localhost:8080/jpaweb/client.xhtml我看到没有样式的纯文本。这两个文件位于同一目录中,由 Netbeans 向导创建。请帮我解决这个问题。

模板.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"
      xmlns:h="http://java.sun.com/jsf/html">

    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <link href="./resources/css/default.css" rel="stylesheet" type="text/css" />
        <link href="./resources/css/cssLayout.css" rel="stylesheet" type="text/css" />
        <title>Facelets Template</title>
    </h:head>

    <h:body>


        <div id="top" class="top">
            <ui:insert name="top">Top</ui:insert>
        </div>
        <div>
            <div id="left">
                <ui:insert name="left">Left</ui:insert>
            </div>
            <div id="content" class="left_content">
                <ui:insert name="content">Content</ui:insert>
            </div>
        </div>
    </h:body>

</html>

客户端.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:composition template="./template.xhtml">

            <ui:define name="top">
                Welcome, to my website
            </ui:define>

            <ui:define name="left">
                My links
            </ui:define>

            <ui:define name="content">
                This page is created for testing
            </ui:define>

        </ui:composition>

    </body>
</html>

如果您让 Netbeans 创建 JSF 项目并且 JSF 模板和模板客户端将为您提供此结果。我也在 Netbeans 1.7.0 中尝试过。同样的问题。

编辑:我运行页面不喜欢http://localhost:8080/jpaweb/client.xhtml但喜欢http://localhost:8080/jpaweb/faces/client.xhtml它。我的项目中没有“faces”目录。我们是否必须向所有 JSF 链接添加“面孔”?

编辑2:我认为netbeans自动配置所有jsf文件都保存在faces目录中,即使我的项目中没有这样的目录。在项目属性 -> 框架 -> JavaServer Faces -> 配置中有字段 JSF Servlet URL 模式,其值为 /faces/*。我认为这意味着必须像在 faces 目录中一样调用 jsf 文件。试图强迫它在我的项目中出现是一个错误:)

4

2 回答 2

1

解决了。Project properties -> Frameworks -> JavaServer Faces -> Configuration -> JSF Servlet URL Pattern将from的值更改/faces/**.xhtml,并且效果很好。

于 2013-03-02T18:51:45.157 回答
0

您的client.xhtml内容文件未正确组合。不要包含 html 标签,因为 JSF 不会从ui:composition这里的标签中解析出任何内容。

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
template="./template.xhtml">
        <ui:define name="top">
            Welcome, to my website
        </ui:define>

        <ui:define name="left">
            My links
        </ui:define>

        <ui:define name="content">
            This page is created for testing
        </ui:define>
</ui:composition>

我用你的模板进行了测试,它可以工作。

于 2013-03-02T11:02:36.740 回答