【问题标题】:One or more resources have the target of 'head', but no 'head一个或多个资源的目标是“头”,但没有“头”
【发布时间】:2013-12-04 05:43:25
【问题描述】:

我写了下面的faceletindex.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>

没有这个错误信息。为什么?

【问题讨论】:

    标签: html css jsf


    【解决方案1】:

    使用&lt;h:head&gt; 而不是&lt;head&gt;

    &lt;head&gt;标签只是一个html标签,在JSF组件树中没有位置。

    &lt;h:head&gt; 标签是一个 JSF 标签。 &lt;h:outputStylesheet&gt; 也是一个 JSF 标签,可以在 &lt;h:head&gt; 标签内解决。

    此外,&lt;h:outputStylesheet&gt; 在 html 中有对应的 &lt;link&gt;&lt;h:outputStylesheet&gt; 旨在从WebContent/resources 目录中读取静态文件。所以你应该把你的css过滤器放到这个目录下,然后你的样式表就会被读取。如果使用&lt;h:outputStylesheet&gt;,则从JSF解释为html标签,浏览器可以理解html标签如下格式。注意/ProjectRoot/javax.faces.resource前缀。

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

    标准 html 标签也可以在 JSF 标签中使用。这就是为什么您看不到 html 标记有任何问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-01
      • 1970-01-01
      • 2017-05-26
      • 2013-06-29
      • 2015-01-16
      • 1970-01-01
      相关资源
      最近更新 更多