带有 Mojarra 2.1.28 和 RichFaces 4.3 的 Internet Explorer Ajax 错误
Posted
技术标签:
【中文标题】带有 Mojarra 2.1.28 和 RichFaces 4.3 的 Internet Explorer Ajax 错误【英文标题】:Internet Explorer Ajax Bug with Mojarra 2.1.28 and RichFaces 4.3 【发布时间】:2014-08-11 00:43:33 【问题描述】:我正在开发一个使用 RichFaces 的 Web 应用程序。目前使用的是4.3.7版本。
当我从 Mojarra 2.1.27 升级到 2.1.28 时,使用 Internet Explorer 8 引入了一个奇怪的行为。我的一些 ajax 按钮停止工作。我做了一步一步的分析,在模板的不同位置移动了一个简单的 ajax 按钮。最后我意识到问题取决于按钮所在的位置。在它工作的形式之外。第一种形式的内部工作。但在第二种形式里面没有。当然,这些表单不包含在彼此中。
在一个非常简单的xhtml中总结问题存在的情况如下:
<a4j:log />
<h:form>
<a4j:commandButton value="Hello" oncomplete="alert('Hello')" />
</h:form>
<h:form>
<a4j:commandButton value="Hello" oncomplete="alert('Hello')" />
</h:form>
第一个按钮按预期工作,但第二个按钮不执行任何操作,ajax 日志面板中出现以下警告(并且按钮不执行任何操作):
richfaces.queue ajax submit error 'name' is null or object not defined
如果我将 ajax 按钮移到表单之外也可以。我已尝试使用 Chrome 浏览器,并且也按预期工作。
当我改回 jsf-api-2.1.27 和 jsf-impl-2.1.27 时,一切正常。但是 RichFaces 更新日志说他们更改为 jsf 2.1.28,所以我必须探索解决此错误的方法,因为我想同时使用 RF 4.3.7 和 jsf 2.1.28。
【问题讨论】:
【参考方案1】:我终于通过互联网研究找到了解决这个问题的好方法:-)
问题是 jsf-impl-2.1.28 的 jsf.js 脚本与 jsf-impl-2.1.27 中的 jsf.js 相比有什么变化。
我已按照此处找到的建议补丁进行操作: https://github.com/jboss/mojarra/commit/6830d0a647d8b6919440a875a5f7ec3840dabf84
我已使用 7-zip 打开 jsf-impl-2.1.28 并提取了 jsf-uncomressed.js 文件。 我已经按照建议修改了脚本,并将结果缩小为 jsf.js 在线 http://jscompress.com/
最后将两个文件放回 jar 中,使用 7-zip utils 覆盖原始文件
现在看起来一切都很完美
我希望它可以帮助其他穿着同样鞋子的人:-)
【讨论】:
以上是关于带有 Mojarra 2.1.28 和 RichFaces 4.3 的 Internet Explorer Ajax 错误的主要内容,如果未能解决你的问题,请参考以下文章