在PrimeFace的inputText
中,我需要在按下任意键时调用函数f1()
。
为了实现这一点,我在xhtml
文件中有:
<p:inputText id="userName" onkeyup="#{myBean.f1()}" >
在我的MyBean.java
我声明了这个功能:
public void f1()
{
// somecode
}
但是这段代码抛出异常:
javax.faces.FacesException:javax.el.ELException:/index.xhtml @ 103,191 onkeyup =“#{MyBean.f1()}”:java.lang.NullPointerException
答案 0 :(得分: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" ...