Richfaces未定义javascript错误

Posted

技术标签:

【中文标题】Richfaces未定义javascript错误【英文标题】:Richfaces is not defined javascript error 【发布时间】:2012-05-11 08:17:22 【问题描述】:

当我尝试调用 Richfaces.showModalPanel('id') 时,我收到 Richfaces is not defined javascript 错误并且没有任何反应。

在我的示例应用程序中,我有两个页面,一个是主视图,另一个页面是子视图。子视图使用上述调用在主视图中调用 popupPanel。我不确定出了什么问题。任何指针将不胜感激。

这是我拥有的页面:

首页:

<!DOCTYPE html>
<html lang="en"
      xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:rich="http://richfaces.org/rich"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:richext="http://java.sun.com/jsf/composite/richext">
    <h:head>
        <title>Page Title</title>

    </h:head>
    <h:body>

     <ui:include id="nextPageInclude" src="secondpage.xhtml"/>   
    <rich:popupPanel id="logoutDialogId"
                 
                 
                 autosized="true"
                 resizeable="false"
                 moveable="true"
                 modal="true"
                 style="border:5px solid #5e81ac; background-color:#dce3ed;">

        <h:outputText value="Inside logout window"/>
    </rich:popupPanel>

    </h:body>
</html>

第二页:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">
    <h:head/>
    <a4j:outputPanel id='headerLinks' layout="block">
        <ul id="sddm">
            <li>
            </li>
            <li>
            </li>
            <li>
                <a4j:commandLink id="logoutLinkId"
                                 value="Logout"
                                 onclick="Richfaces.showPopupPanel('logoutDialogId')"
                                 styleClass="linkLogout"/></li>

        </ul>
        <div style="clear:both"></div>
    </a4j:outputPanel>
</ui:composition>

编辑:附加加载的 JS 截图

谢谢,

【问题讨论】:

【参考方案1】:

上述代码的问题是,由于 RichFaces 4.0 我们无法进行旧调用来打开 popupPanel,因此您编写它的方式已过时,如果可以,请尝试以下操作:-

<a4j:commandLink id="logoutLinkId"
    value="Logout"
    onclick="#rich:component('logoutDialogId').show();"
    styleClass="linkLogout"/>

类似地隐藏 popupPanel 使用

<a4j:commandLink id="Close_Modal"
    value="Close Logout"
    onclick="#rich:component('logoutDialogId').hide();"
    styleClass="linkLogout"/>

【讨论】:

欢迎您 :) 我在 *** 上对世界的第一个贡献 欢迎来到 SO。继续贡献你的知识。给+1。顺便说一句,您可能会看到我提出的很多 Richfaces4 相关问题(我们正在从 3.x 升级到 4.2) 如果我能找到问题,我会全力以赴,我会分享答案:)【参考方案2】:

从包含组合中删除&lt;h:head&gt;。它不属于那里,并且可能会损坏生成的 HTML 头。 &lt;h:head&gt; 应该在整个视图中只声明一次,最好只在主模板中声明。

另一个可能的原因是您有一个Filter,它恰好与资源请求的 URL 模式匹配,而这反过来又没有完全正确地完成它的工作。检查所有已生成的&lt;script&gt; 元素的 HTML 源代码,然后在 Firebug/Chrome/IE9 中按 F12 并浏览 Net(或 Network)选项卡以查看已检索到的浏览器至于JS资源。


更新:对象名称为RichFaces,大写F,而不是Richfaces。也修复它。

【讨论】:

嗨,BalusC,最初我确实尝试过不带头的作曲,但没有用。然后我在那里添加了 h:head ,仍然是同样的问题。我认为发生了其他事情。 嗨 BalusC,附上加载的 JS 截图。它确实包含 jsf.js.xhtml。 richfaces.js 包含该功能。请检查浏览器实际检索到的内容。您的问题表明它返回了 404 或完全不同的东西。或者直接在地址栏中复制该脚本 URL。 脚本中包含richfaces.js.xhtml 是否正确?应该只是 richfaces.js 吧? 是的,没错。 JSF 资源由FacesServlet 处理。顺便说一句,函数名不应该是RichFaces而不是Richfaces吗?

以上是关于Richfaces未定义javascript错误的主要内容,如果未能解决你的问题,请参考以下文章

Richfaces 4 a4j:commandLink 操作未在 Rich:popupPanel 中触发

Javascript 错误:JupyterLab 中未定义 IPython

Bootstrap 设置错误:未捕获 ReferenceError:未定义 jQuery 和未捕获错误:Bootstrap 的 JavaScript 需要 jQuery

Bourbon Refills Navigation JavaScript 错误:未捕获类型错误:未定义不是函数

为啥“”.abcd 返回未定义的值而不是在 Javascript 中抛出未定义的错误(但 Typescript 抛出警告)

在 JavaScript [重复] 中引用未定义变量时如何避免错误