【问题标题】:Primefaces 3.4.2 javascript errorPrimefaces 3.4.2 javascript错误
【发布时间】:2013-01-10 10:10:11
【问题描述】:

我正在使用 3.4.2 版本的 Primefaces 开发 Web 应用程序。我有一个p:pickList。应用程序正在使用通用模板工作,并且每个页面都替换了模板的 general_content,该模板正在为每个请求重新加载。我的问题是选择列表不起作用(无法与之交互),因为我加载页面时发生了一些 JavaScript 错误。这是我的 xhtml:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui"
template="/templates/general_template.xhtml">

<ui:define name="metadata">
    <f:metadata>
        <f:viewParam id="user" name="user"
            value="#{navegableUserData._ParamUser}" />

        <f:viewParam id="NavIndex" name="NavIndex"
            value="#{navegableUserData._QueueIndex}" />
        <f:event type="preRenderView"
            listener="#{navegableUserData.initialize}" />
    </f:metadata>
    <h:message for="user" />
</ui:define>

<ui:define name="general_content">
    <h:form id="SystemUserForm">
        <p:pickList id="rolePickList" value="#{navegableUserData._ListRoles}"
            var="role" itemValue="#{role}" converter="rolConverter">
            <f:facet name="sourceCaption">
                <h:outputText value="#{msg.AVAILABLE}" />
            </f:facet>
            <f:facet name="targetCaption">
                <h:outputText value="#{msg.ASSIGNED}" />
            </f:facet>

            <p:column>
                <h:outputText value="#{role._Nombre}" />
            </p:column>
        </p:pickList>
    </h:form>
</ui:define>

这是我遇到的 JavaScript 错误:

Firefox 中的 Firebug

Firebug 告诉我在 primefaces.js 的第一行中找不到元素“a”

"a is undefined"
PrimeFaces={escapeClientId:function(a){return"#"+a.replace(/:/g,"\\:")},
...

Chrome 中的检查器

Uncaught TypeError: Cannot call method 'replace' of undefined primefaces.js.xhtml:1
PrimeFaces.escapeHTML primefaces.js.xhtml:1
(anonymous function) primefaces.js.xhtml:27
bG.extend.each jquery.js.xhtml:14
bG.fn.bG.each jquery.js.xhtml:14
PrimeFaces.widget.PickList.PrimeFaces.widget.BaseWidget.extend.generateItems primefaces.js.xhtml:27
PrimeFaces.widget.PickList.PrimeFaces.widget.BaseWidget.extend.init  primefaces.js.xhtml:27
e.(anonymous function) jquery.js.xhtml:373
c jquery.js.xhtml:373
PrimeFaces.createWidget primefaces.js.xhtml:1
PrimeFaces.cw primefaces.js.xhtml:1
(anonymous function)

看起来有些 jquery 失败了。使用之前的 Prime 版本 3.4.1,一切正常。

【问题讨论】:

  • 在 firebug 上,尝试在该行(脚本选项卡)上添加一个断点,当它暂停时,在此 function(a) 参数上查看它作为鼠标悬停工具提示的内容。它可以在没有 ID 的元素上调用该函数,如果是这种情况,可能是 PF 3.4.2 上的一个错误(你不能降级你的 PF 库吗?)
  • 我已经用 Firebug 进行了测试,它给了我一个 undefined 值。使用 JSF 2.1.15-2.1.16 测试。我当然可以降级,但我只是想知道为什么会这样。

标签: jsf-2 primefaces


【解决方案1】:

p:pickList (primefaces v3.4.2) 需要指定 itemLabel。

只需添加

itemLabel="#{role}"

到你的 p:pickList

【讨论】:

  • 问题已解决。 PF 文档根本没有指定哪些属性是必需的。这种错误更难调试。谢谢。
猜你喜欢
  • 2012-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多