[英]Trouble using <f:ajax> on JSF 2.0
上周,我在这里发布了一个关于将J2EE与Ajax结合使用的问题,并得到了有关支持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表单的位置显示正在编写的文本,但这并没有发生。
我讨厌就大致相同的事情提出两个主题,但是我真的不知道这里出了什么问题,从我读过的这段代码应该能奏效的地方来看。
您在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资源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.