一个或多个资源的目标是“head”,但未在视图中定义“head”组件

时间:2013-09-22 05:26:09

标签: user-interface jsf primefaces head

我在GlassFish 3.2上使用NetBeans 7.3.1和PrimeFaces 3.5。

我使用PrimeFaces组件创建了一个JSF页面。该项目运行良好,但PrimeFaces用户界面看起来感觉完全缺失。我只注意到服务器日志中的以下消息:

  

一个或多个资源的目标是' head'但不是' head'组件已在视图中定义

这意味着什么以及如何修复PrimeFaces UI外观?

2 个答案:

答案 0 :(得分:29)

这意味着您在XHTML模板中使用纯HTML <head>而不是JSF <h:head>。 JSF <h:head>允许通过<head>注释在生成的HTML @ResourceDependency中自动包含CSS / JS资源。 PrimeFaces作为基于jQuery的JSF组件库需要自动包含一些jQuery / UI JS / CSS文件,这确实需要<h:head>

所以,搜索

<head>
    <title>Some title</title>
    ...
</head>
在模板中

并将其替换为

<h:head>
    <title>Some title</title>
    ...
</h:head>

另见:

答案 1 :(得分:2)

感谢您的有用答案,使用H:HEAD时添加了JS / CSS / Jquery脚本,下面是生成的HTML页面:

1-使用<head>代码

<head>
    <title>TODO supply a title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>

2-使用<h:head>标记

<head><link type="text/css" rel="stylesheet" href="/PrimefacesExamples  /face/javax.faces.resource/theme.css?ln=primefaces-aristo" />
  <link type="text/css" rel="stylesheet" href="/PrimefacesExamples/faces/javax.faces.resource/primefaces.css?ln=primefaces&amp;v=4.0" />
  <script type="text/javascript" src="/PrimefacesExamples/faces/javax.faces.resource/jquery/jquery.js?ln=primefaces&amp;v=4.0"></script>
  <script type="text/javascript" src="/PrimefacesExamples/faces/javax.faces.resource/jquery/jquery-plugins.js?ln=primefaces&amp;v=4.0"></script>
  <script type="text/javascript" src="/PrimefacesExamples/faces/javax.faces.resource/primefaces.js?ln=primefaces&amp;v=4.0"></script>
<title>TODO supply a title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>