2010-11-10 39 views
0

對不起,問題標題,但我找不出一個更好的。RichFaces 4 - <a4j:ajax ...>「找不到RichFaces」

我正在使用JSF 2.0(MyFaces 2.0.2)並將RichFaces 4(4.0.0.20101004-M3)添加到我的項目中。 我發現RichFaces的4(http://java.sys-con.com/node/1098139)的示例,並且創建的XHTML頁用下面的代碼:

<ui:define name="webpage_main_body"> 
    <h:form> 
     <h:panelGrid columns="2"> 
      <h:outputText value="Text:" /> 
       <h:inputText value="#{echoBean.text}"> 
        <a4j:ajax event="keyup" render="text,count" 
         listener="#{echoBean.countListener}" /> 
       </h:inputText> 
       <h:outputText value="Echo:" /> 
       <h:outputText id="text" value="#{echoBean.text}" /> 
       <h:outputText value="Count:" /> 
       <h:outputText id="count" value="#{echoBean.count}" /> 
      </h:panelGrid> 
     </h:form> 
</ui:define> 

由於這是一個Facelets的頁面,它使用定義標題的模板(包括徽標和主導航)。

如果我在瀏覽器中打開頁面,它會正確顯示。輸入框的的生成的HTML代碼如下:

<input type="text" 
onkeyup="RichFaces.ajax(&quot;j_id1176210999_514e0f6c:j_id1176210999_514e0fad&quot;,event,{&quot;parameters&quot;:{&quot;javax.faces.behavior.event&quot;:&quot;keyup&quot;} })" value="" name="j_id1176210999_514e0f6c:j_id1176210999_514e0fad" id="j_id1176210999_514e0f6c:j_id1176210999_514e0fad"> 

是,如果我輸入內容的文本框,它應該開火使用JavaScript的功能每KEYUP一個Ajax傳請求的問題稱爲「RichFaces.ajax (......)」。但是每次在事件被觸發,Firefox的錯誤控制檯打印錯誤:

Error: RichFaces is not defined 
Source File: http://localhost:8080/project/richEchoTest.xhtml 
Line: 1 

我的問題:有沒有人有這個地方的RichFaces-Javascript的對象定義的想法?還是有什麼我必須包括在XHTML頁面?我只包括「xmlns:a4j =」http://richfaces.org/a4j「,我是否也必須添加」xmlns:rich ....「?

在此先感謝,我真的會感謝所有幫助,因爲我已經浪費3天尋找到問題

//編輯: 我忘了提,如果我用內置的JSF2的Ajax標籤它就像一個魅力:

<f:ajax event="keyup" execute="@form" render="text count" 
listener="#{echoBean.countListener}" /> 
+2

我剛剛看到一條日誌消息:「警告:檢測到JavaServer Faces的MyFaces實現。使用RichFaces行爲包裝組件(a4j:ajax等)將不起作用!「我想這就是問題所在。 – 2010-11-11 09:15:50

回答

4

此問題已解決並已在this link中評論。以下是相關摘錄:

Cause:

The browser can't find references to JS and CSS libraries of RichFaces.

Solution:

Add the following tag to your JSF code:

<h:head/>