我开始学习Primefaces框架,基于JSF和AJAX,我有一些麻烦。
我正在尝试一个简单的例子,例如有一个inputText,我试图设置一个计数器,每次按下inputText键时增加其值。为此,我使用了AJAX和Bean。问题是计数器只在第一次增加,之后保持不变。下面是我的代码:
WEB页面<!DOCTYPE html>
<html xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>AJAX LISTENER</title>
</h:head>
<h:body>
<h:form>
<h:inputText id="counter">
<p:ajax update="out" event="keypress" listener="#{counterBean.increment}"/>
</h:inputText>
<br/>
AJAX listener = <h:outputText id="out" value="#{counterBean.count}" />
</h:form>
</h:body>
</html>
憨豆import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class counterBean {
private int count;
public counterBean() {
this.count = 0;
}
public void increment(){
this.count = this.count +5;
}
public void setCount(int count) {
this.count = count;
}
public int getCount() {
return count;
}
}
需要对bean进行查看
参考:http://www.primefaces.org/documentation
在你的情况下,更好的事件是keyup我不认为它在主面有按键事件。
用户指南4.0第8.3节
- 好吧,你的答案其实很简单,我做了测试,在最终意识到这一切的愚蠢之后…
你的ManagedBean只是RequestScoped -因此它得到重新初始化每个请求…改成@ viewscope
关于豆子的一个很棒的指南是:http://balusc.blogspot.com.au/2011/09/communication -在jsf html - 20. # ManagedBeanScopes