我上周在这里发布了一个关于将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表单旁边写入时写入的文本,但这不会发生。
我讨厌制作关于大致相同的两个主题,但我真的不知道这里有什么不对,从我读过这段代码应该有用。
答案 0 :(得分:1)
您的f:ajax
中指定了错误的事件。使用keyup
或keypress
代替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资源。