2011-04-11 21 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