Jsf 2 JSF2 MyFaces和CDATA使f:ajax渲染失败

Jsf 2 JSF2 MyFaces和CDATA使f:ajax渲染失败,jsf-2,cdata,myfaces,Jsf 2,Cdata,Myfaces,我在使用MyFaces 2.0的h:OutputScript中的CDATA块时遇到了一些问题。。。但是我不知道我是否应该避免在JSF2中使用CDATA,或者是因为我做错了事情。 可能是因为我在许多复合组件中使用了许多脚本… 事实上,当我有一些复合组件包含被CDATA块包围的脚本时,页面中的其他脚本就不起作用了 删除CDATA解决了这个问题。 尽管如此,我还是遇到了一个问题,即使用CDATA块使我的一些复合组件出现错误,即在尝试使用f:ajax render属性渲染组件时,在类NamingCont

我在使用MyFaces 2.0的h:OutputScript中的CDATA块时遇到了一些问题。。。但是我不知道我是否应该避免在JSF2中使用CDATA,或者是因为我做错了事情。
可能是因为我在许多复合组件中使用了许多脚本…
事实上,当我有一些复合组件包含被CDATA块包围的脚本时,页面中的其他脚本就不起作用了
删除CDATA解决了这个问题。 尽管如此,我还是遇到了一个问题,即使用CDATA块使我的一些复合组件出现错误,即在尝试使用f:ajax render属性渲染组件时,在类NamingContainer上找不到组件的属性
删除脚本周围的CDATA解决了问题。

所以我的问题是:我是唯一一个在CDATA块和JSF2(MyFaces)方面有问题的人吗?

如果你是唯一一个在CDATA块和JSF2(MyFaces)方面有问题的人,我无法回答。我至少可以回答,在XML文件中使用JS纯代码是一种糟糕的做法。JS代码不是格式良好的XML。在JS代码中转义XML特殊字符或将JS代码放在CDATA块中是非常难看的。它给JSF ajax响应带来了麻烦,这又是另一回事。从技术上讲,这可能是所使用的JSF实现中的一个bug。但从另一方面来说,你实际上是在练习一个糟糕的练习

只需将JS代码放在自己的
.JS
文件中,您可以通过
引用该文件


...

这是一个已知的问题。有关详细信息,请参阅。它已经被修复,因此您可以尝试最新的代码,它将包含在2.1.4和2.0.10中

为什么不把脚本放在一个单独的文件中呢?我刚试过,但似乎不起作用。事实上,我的脚本以复合组件的组件为目标,我在脚本中使用#{cc.clientID}。因此,我认为当外部化时,js不会用实际值替换#{cc.clientID}…
外部化js有没有办法得到它?谢谢。我还在2.0.7上。当2.0.10可用时,我将进一步尝试。
<cc:implementation>
    <h:outputScript library="foo" name="js/your-cc-script.js" target="head" />
    ...
</cc:implementation>