一个或多个资源的目标是“头部”,但没有“头部”

时间:2013-12-04 05:43:26

标签: html css jsf

我写了以下facelet index.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:myCC="http://xmlns.jcp.org/jsf/composite/hui"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
    <head>

        <h:outputStylesheet name="css/centering.css"/>
    </head>
    <body>
        <div style="centerClass">
            <mycc:logpass/>
        </div>
    </body>
</html>

当我从浏览器获取此facelet的内容时

One or more resources have the target of 'head', but no 'head' component has been defined within the view. 

所以来自控制台的html如下:

<head>

    <style type="text/css"></style>
    <script type="text/javascript" async="" src="http://www.google-analytics.com/ga.js"></script>
    <script type="text/javascript" async="" src="http://cdn.mxpnl.com/libs/mixpanel-2.1.min.js"></script>
    <style type="text/css"></style>

</head>

但如果我写

<?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:mycc="http://xmlns.jcp.org/jsf/composite/hui"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
    <head>
        <link href="css/centering" rel="stylesheet" type="text/css"/>
    </head>
    <body>
        <div style="centerClass">
            <mycc:logpass/>
        </div>
    </body>
</html>

没有此错误消息。为什么呢?

1 个答案:

答案 0 :(得分:2)

使用<h:head>代替<head>

<head>标记只是一个html标记,它在JSF组件树中没有位置。

<h:head>标记是JSF标记。 <h:outputStylesheet>也是一个JSF标记,可以在<h:head>标记内解析。

此外,<h:outputStylesheet>在html中有对应的<link><h:outputStylesheet>旨在从WebContent/resources目录中读取静态文件。因此,您应该将css folter放到此目录中,然后将读取样式表。如果使用<h:outputStylesheet>,则将其从JSF解释为html标记,哪些浏览器可以按以下格式理解html标记。请注意/ProjectRoot/javax.faces.resource前缀。

<link type="text/css" rel="stylesheet" href="/ProjectRoot/javax.faces.resource/css/centering.css.xhtml" />

Standart html标签也可以在JSF标签内使用。这就是为什么你没有看到html标签的任何问题。