如何在<h:outputscript>?</h:outputscript>中包含带有查询字符串的JS文件

时间:2011-08-18 05:16:24

标签: javascript jsf primefaces

在JSF页面中,我使用此代码包含一个JS文件:

<h:outputScript library="js" name="reworkBase.js" />

效果很好,但我想通过添加版本参数来实现缓存清除:

<h:outputScript library="js" name="reworkBase.js?version=1" />

但是找不到JS文件。我知道如果我使用<script type="text/javascript">标签,它也会很好用。但有没有办法用<h:outputScript>标签实现?

1 个答案:

答案 0 :(得分:2)

这是Mojarra的一个错误。他们的ScriptRendererissue 1212修复以支持查询字符串。但是,对于指定library的情况,他们的修复是错误的。他们使用+代替&amp;作为查询字符串参数分隔符,这只会产生404的结果:

<script src="/context/javax.faces.resource/reworkBase.js.xhtml?ln=js+version=1">

应该是:

<script src="/context/javax.faces.resource/reworkBase.js.xhtml?ln=js&amp;version=1">

我已将此错误报告为issue 2168

同时你最好的选择是完全忽略library,假设库名为js(显然代表“JavaScript”)你似乎对使用可配置外观不感兴趣'n'feel /脚本库。

<h:outputScript name="js/reworkBase.js?version=1" />

这将产生正确的URL。

<script src="/context/javax.faces.resource/js/reworkBase.js.xhtml?version=1">