在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>
标签实现?
答案 0 :(得分:2)
这是Mojarra的一个错误。他们的ScriptRenderer
按issue 1212修复以支持查询字符串。但是,对于指定library
的情况,他们的修复是错误的。他们使用+
代替&
作为查询字符串参数分隔符,这只会产生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&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">