2013-12-16 40 views
0

我們正在從jsf 1.2升級到jsf 2. 我們使用的是apache myfaces 2.1和豐富的面孔4.3。AJAX無法使用myfaces 2.1和豐富的面孔4.3

問題是,看起來<a4j:commandButton>標記AJAX功能壞了。 以下是xhtml文件。

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:c="http://java.sun.com/jsp/jstl/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:rich="http://richfaces.org/rich"> 


    <h:form prependId="false" id="questionsForm"> 

     <!-- other form fields are not shown --> 
     <a4j:commandButton id="questions" value="Clear" action="#{bean.clearAction}"/> 
    </h:form> 

</html> 

當點擊「清除」按鈕時,執行後端代碼,但會發生整個頁面重新加載(頁面再次刷新)。 預遷移代碼在沒有頁面重新加載的情況下工作得很好。

任何人都可以請幫忙在如何讓這個AJAX工作在豐富的面孔標籤?

回答

2

至於你要告訴a4j:commandButton給定的屬性,

    你想這件
  • 已經執行(例如其當前頁面的輸入字段應更新)
  • 該頁面的部分要已重新呈現

第一個是使用屬性execute完成的,最後一個是使用屬性render完成的。如果沒有這兩個已定,那麼按鈕的行爲就像一個傳統的h:commandButton(這也解釋了所描述的行爲)

更新:還要檢查<head><body>標籤必須像<h:head><h:body>所以JSF有機會添加必需的JavaScript和CSS庫。

更新:你有沒有仔細檢查你的動作,返回void /「」/ null而不是任何轉發? (另請參閱"a4j:commandButton makes a full page reload RichFaces 3.3.3 CR1"

+0

@lray:謝謝你的回覆。我試着給出執行和渲染屬性值,但沒有改變行爲。頁面重新加載仍然發生。 – Atul

+0

@lray:我也嘗試添加h:head和h:body,但存在同樣的問題 – Atul

+0

@Atul剛剛在本地進行了測試,但使用了Mojarra Faces 2.1.7和Richfaces 4.3.3 Final。即使沒有渲染/執行,也不會發生重新加載。所以它必須是給定的xhtml代碼之外的問題。 –