我有一个JSF应用程序,其中一些脚本使用target =“head”属性插入,但在将Primefaces 3.5包含到类路径后,这些脚本将停止渲染。
以下是页面代码:
<!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"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
</h:head>
<h:body>
<h:outputScript target="head">
function a(){};
</h:outputScript>
</h:body>
</html>
删除目标属性会使脚本正常,但在正文中,而不是在头部......
任何线索? 谢谢&amp;问候。
答案 0 :(得分:5)
自PrimeFaces 3.0以来,有一个新的HeadRenderer
允许自定义资源排序。另见this blog。这已经覆盖了标准的JSF头部渲染器。这本身没问题,但显然它无法正确识别带有头部目标的内联脚本。这显然是PrimeFaces头部渲染器中的一个错误。你最好的选择是report这个问题给PF家伙。
同时,如果您根本没有使用新的PrimeFaces功能,那么只需将Mojarra's own HeadRenderer
作为默认的头部渲染器添加回来faces-config.xml
添加以下条目:
<render-kit>
<renderer>
<component-family>javax.faces.Output</component-family>
<renderer-type>javax.faces.Head</renderer-type>
<renderer-class>com.sun.faces.renderkit.html_basic.HeadRenderer</renderer-class>
</renderer>
</render-kit>
注意:如果你使用的是MyFaces而不是Mojarra,显然可以参考MyFaces拥有的那个。