2012-05-01 159 views
5

當我嘗試調用Richfaces.showModalPanel('id')時,我正在獲取Richfaces未定義的JavaScript錯誤並且沒有任何發生。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

取下包括組成<h:head>。它不屬於那裏,並可能會破壞生成的HTML頭。 <h:head>應該在視圖中只聲明一次,最好只在主模板中聲明。

另一個可能的原因是,您有一個Filter恰好與資源請求的URL模式相匹配,這反過來又不能完全正確地完成其工作。檢查所有元素都生成的HTML源代碼,並在Firebug/Chrome/IE9中按F12並瀏覽網絡(或網絡)選項卡,以查看哪些瀏覽器已全部檢索到JS資源。


更新:對象名稱是RichFaces用大寫F,不Richfaces。修復它。

+0

嗨BalusC,起初我也嘗試無頭組成,它沒有工作。然後我加了h:頭,還是一樣的問題。我想其他事情正在發生。 – kosa

+0

我用另一個可能的原因更新了答案。 – BalusC

+0

嗨BalusC,加載JS的附加屏幕截圖。它包含jsf.js.xhtml。 – kosa

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"/> 
+0

你是對的。我做到了。謝謝。 – kosa

+1

歡迎您:) 我對堆疊世界的第一個貢獻溢出 – saNiks

+1

歡迎來到SO。繼續貢獻你的知識。給+1。順便說一下,你可能會看到很多Richfaces4相關的問題(我們正在從3.x升級到4.2) – kosa