5

当我尝试调用 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"
                 width="300"
                 height="50"
                 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 截图

在此处输入图像描述

谢谢,

4

2 回答 2

8

上述代码的问题是,由于 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"/>
于 2012-05-02T18:57:06.223 回答
2

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

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


更新:对象名是RichFaces大写的F,不是Richfaces。修复它。

于 2012-05-01T20:30:42.817 回答