在PrimeFace的inputText,我需要调用函数f1()时,按下任意键.
为实现这一点,xhtml我在文件中有:
<p:inputText id="userName" onkeyup="#{myBean.f1()}" >
Run Code Online (Sandbox Code Playgroud)
在我的MyBean.java我已经声明了这个功能:
public void f1()
{
// somecode
}
Run Code Online (Sandbox Code Playgroud)
但是这段代码引发了异常:
javax.faces.FacesException:javax.el.ELException:/index.xhtml @ 103,191 onkeyup ="#{MyBean.f1()}":java.lang.NullPointerException
如果要调用java方法,则应使用p:ajax event而不是onkeyup属性
<p:inputText id="userName">
<p:ajax event="keyup" listener="#{myBean.f1}"></p:ajax>
</p:inputText>
Run Code Online (Sandbox Code Playgroud)
onkeyup:当通过input元素释放密钥时执行的客户端回调.
换句话说onkeyup用于调用js函数 onkeyup="alert('hello')"
关于你得到的异常:它的原因是你的页面试图f1在页面加载时执行方法而不是在keyup事件上 - 例如,如果你的f1方法会返回一个字符串,那个字符串会替换它#{myBean.f1()},你生成的页面将如下所示:
... onkeyup="string value returned from f1 method" ...
Run Code Online (Sandbox Code Playgroud)