2011-04-11 25 views
0

上週我在這裏發佈了一個關於在J2EE上使用Ajax的問題​​,並獲得並回答了有關使用JSF 2.0支持ajax的構建。不幸的是,我似乎無法得到這個工作的任何例子!在JSF 2.0上使用<f:ajax>時遇到問題

我試過用不同的IDE與不同的服務器,但我不能得到這個基本的例子工作。

一個會話範圍的託管bean:

public class testBean 
{ 
    private String name; 

    public testBean() {} 


    public String getName(){ 
     return name; 
    } 

    public void setName(String name){ 
     this.name = name; 
    } 
} 

而XHTML頁面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html 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"> 
<head> 
    <title>Default title</title> 
</head> 

    <body> 

     <h:form id="testForm"> 

      <h:inputText id="test" value="#{testBean.name}" > 
       <f:ajax event="keyup" render="testForm:name" execute="testForm:test"/> 
      </h:inputText> 


      <h:outputText id="name" value="#{testBean.name}" /> 
     </h:form> 

    </body> 

</html> 

從我瞭解的頁面應該顯示而被寫入旁邊的它被寫入文本inputText表單,但這不會發生。

我討厭做兩個關於大致相同的事情,但我真的不知道這裏錯了什麼,從我讀這段代碼應該工作。

回答

1

您在您的f:ajax中指定了錯誤的事件。使用keyupkeypress,而不是click

<h:inputText id="test" value="#{testBean.name}" > 
    <f:ajax event="keyup" render="name" execute="test"/> 
</h:inputText> 

的onclick/Click事件處理程序只能通過鼠標點擊射擊。

UPDATE:

之前沒有注意到它:

我認爲你應該使用<h:head>而不是<head>正確包括AJAX所有的JavaScript資源。

+0

它是一個錯字,我正在測試不同的事件。關鍵是測試值,它不起作用。 – David 2011-04-11 08:57:09

+0

@David:它可以與render =「@ form」和execute =「@ form」聯合使用 – 2011-04-11 10:04:12

+0

@Matt:不,它不會。 – David 2011-04-11 10:11:42