2

在 PrimeFace 中inputText,我需要在按下任意键时调用函数 ‍‍‍<code>f1()。

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

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

在我的MyBean.java我已经声明了这个函数:

public void f1()
{
// somecode
}

‌但是这段代码抛出了一个异常:

javax.faces.FacesException: javax.el.E​​LException: /index.xhtml @103,191 onkeyup="#{MyBean.f1()}": java.lang.NullPointerException

4

1 回答 1

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" ...
于 2012-06-21T11:30:50.100 回答