Richfaces没有定义javascript错误

时间:2012-05-01 20:27:28

标签: jsf-2 richfaces facelets

当我尝试调用Richfaces.showModalPanel(' id')时,我发现Richfaces没有定义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截图

enter image description here

谢谢,

2 个答案:

答案 0 :(得分: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"/>

答案 1 :(得分:2)

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

另一个可能的原因是你有Filter恰好与资源请求的URL模式匹配,而这反过来又完全没有完成它的工作。检查HTML源代码生成了<script>个元素并在Firebug / Chrome / IE9中按F12并浏览 Net (或网络)标签以查看哪些浏览器具有全部检索JS资源。


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