【发布时间】:2012-12-17 23:43:58
【问题描述】:
我最近将 Primefaces 从 3.4 更新到 3.4.2,现在我在一些有 p:selectOneMenu 组件的页面上遇到了问题。我在 JavaScript 控制台中看到错误消息:TypeError: e.offset(...) is undefined。此错误会在页面加载时立即记录。
有谁知道问题出在哪里?
【问题讨论】:
-
听起来像是 jQuery 版本冲突。您是否出于某种原因在每个页面中手动包含
jquery.js文件,而不是依赖 PrimeFaces 本身已经提供的文件? PrimeFaces 几乎在每个版本中都会更新内置 jQuery 库的版本。解决方案显然是停止手动包含 jQuery,而只使用提供的 PrimeFaces。 -
不,只使用提供的默认 jQuery。我看到他们在 3.4.2 中更改了 jQuery 版本,所以我尝试使用 Primefaces 3.4.1,它工作正常。 JavaScript 错误出现在 primefaces.js 文件的第 1 行。在 Javascript 中的堆栈之后,我看到调用的顶级函数是:
PrimeFaces.cw('SelectOneMenu','widget_aswdatatable_detaljSubview_editForm_paket',{id:'aswdatatable:detaljSubview:editForm:paket',effect:'fade'});} -
我也在使用 3.4.2,无法重现您的问题。我仍然怀疑一些与 jQuery 相关的不良 JS 文件会导致问题。您是否调查了获得的 HTML 输出和/或 HTTP 流量中的
<script>引用,以确保确定? -
好的。我发现为什么会发生这种情况,但仍然不知道这是一个错误还是我没有以正确的方式使用它。我有一个带有数据表的复合组件和几个显示条目详细信息的对话框。在复合组件中,我定义了 facet detailForm,并在每个对话框中渲染了该 facet。当然,我将每个
cc:renderFacet封装在不同的f:subview中。这可以吗?如果这不是我应该做的?当我只留下一个cc:renderFacet时,它工作正常。 -
最后,当我在复合组件中多次渲染同一个构面时,就会出现问题。 Primefaces 为所有
selectOneMenu元素生成相同的widgetVar。我通过检查生成的 HTML 发现了这一点。
标签: javascript jquery jsf-2 primefaces selectonemenu