麻烦在JSF 2.0上使用<f:ajax> </f:ajax>

时间:2011-04-11 08:16:39

标签: ajax jsf jsf-2

我上周在这里发布了一个关于将Ajax与J2EE一起使用的问题,并且回答了有关使用JSF 2.0支持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 个答案:

答案 0 :(得分:1)

您的f:ajax中指定了错误的事件。使用keyupkeypress代替click

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

仅通过鼠标单击触发onclick / click事件处理程序。

更新:

之前没有注意到:

我认为您应该使用<h:head>代替<head>来正确包含ajax的所有javascript资源。