2012-06-21 78 views
2

在PrimeFace的inputText中,我需要在任何按键被按下时调用功能f1()Jsf inputText onkeyup事件处理程序

为了实现这一点,在xhtml文件我有:

<p:inputText id="userName" onkeyup="#{myBean.f1()}" > 

在我MyBean.java我宣布这个功能:

public void f1() 
{ 
// somecode 
} 

但这代码抛出一个异常:

javax.faces.FacesException:javax.el.E​​LException:/index.xhtml @ 103,1 91的onkeyup = “#{MyBean.f1()}”:显示java.lang.NullPointerException

回答

7

如果你想调用Java方法,你应该使用的p:ajax event代替onkeyup属性

<p:inputText id="userName"> 
    <p:ajax event="keyup" listener="#{myBean.f1}"></p:ajax> 
</p:inputText> 

onkeyup:通过 输入元素释放密钥时执行的客户端回调。

换言之的onkeyup是调用JS功能,如 onkeyup="alert('hello')"

你得到了异常

:它导致你页面试图执行f1方法在页面加载,而不是keyUp事件 - 例如,如果您f1方法必须返回一个字符串,字符串将取代#{myBean.f1()}和你生成的页面应该是这样的:

... onkeyup="string value returned from f1 method" ...