2012-06-21 115 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" ...