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



在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>标签?

这是Mojarra的一个bug。他们的ScriptRenderer按照issue 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">

我已经把这个bug报告为2168号问题。

与此同时,你最好的选择是完全省略library,考虑到js的库名(显然代表"JavaScript"),你似乎对使用可配置的外观/脚本库根本不感兴趣。

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

这将产生正确的URL。

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

相关内容

  • 没有找到相关文章

最新更新