一个或多个资源的目标是“头”,而不是“头”组件已经在视图中定义

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

我用PrimeFaces组件创build了一个JSF页面。 该项目运行良好,但PrimeFaces UI look'n'feel完全缺失。 我只在服务器日志中的消息下面注意到:

一个或多个资源的目标是“头”,而不是“头”组件已经在视图中定义

这是什么意思,我该如何解决PrimeFaces用户界面look'n'feel?

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

所以,search一个

 <head> <title>Some title</title> ... </head> 

在您的模板中,并将其replace

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

也可以看看:

  • Java Facelets中<h:head>和<head>有什么区别?
  • 无法理解<h:head>行为
  • 如何以编程方式将JS和CSS资源添加到<h:head>?
  • 如何使用JSF 2.0 Facelets在XHTML中包含另一个XHTML?

感谢您的有用答案,使用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>