h:带有target ="head"的outputScript不能使用Primefaces 3.5

Raf*_*sto 2 jsf primefaces mojarra

我有一个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>
Run Code Online (Sandbox Code Playgroud)

删除目标属性会使脚本正常,但是在正文中,而不是在头部...

有线索吗?感谢和问候.

Bal*_*usC 5

从PrimeFaces 3.0开始,有一个新的HeadRenderer允许自定义资源排序.另见此博客.这已经覆盖了标准的JSF头部渲染器.这本身没问题,但显然它无法正确识别带有头部目标的内联脚本.这显然是PrimeFaces头部渲染器中的一个错误.你最好的办法是向PF 人员报告这个问题.

同时,如果您根本没有使用新的PrimeFaces功能,那么只需将Mojarra自己的功能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>
Run Code Online (Sandbox Code Playgroud)

注意:如果你使用的是MyFaces而不是Mojarra,那么显然可以参考MyFaces拥有的那个.