爲了在另一個線程中響應Infragile的請求,我要求這是一個單獨的問題,而不是後續。我試圖解決的問題: 我從JSF1.2遷移到JSF2。在JSF1.2中一切正常。 我已經重寫了一個關鍵項目是一個複合組件,它基本上是一個在我的支持bean中通過在代碼中添加組件創建的面板。如何向後臺bean中的動態創建的組件添加ajax行爲?
特別是,我有h:inputText和h:selectOneMenu組件,我在代碼中創建了一個「Apply」h:commandButton。 「應用」按鈕有一個動作偵聽器,用於檢查h:inputText和h:selectOneMenu組件中的值。所有這些工作正常,但是當我獲取h:inputText或h:selectOneMenu組件中的值時,我會得到原始值,而不是用戶輸入的新值。就像我說的,這在JSF1.2(我得到了新的值)中工作得很好,但出於某種原因在JSF2中沒有。
我已經嘗試了幾件事情來解決這個問題,所以我想我會在h:inputText和h:selectOneMenu項目中添加ajax行爲,當這些組件中的值發生變化時,我可以調用另一個支持ajax行爲來獲取新值的bean監聽器。
我想添加ajax行爲到我在代碼中創建的組件(不綁定到頁面組件)。我可以創建沒有問題的組件。但是,我遇到的問題是如何將ajax行爲添加到組件。
有人可以發佈示例代碼來爲值更改或模糊事件添加ajax行爲嗎?這裏是我用來在代碼中創建組件的代碼 - 我將如何修改它以添加ajax行爲? hpg = new HtmlPanelGrid(); children = hpg.getChildren(); children.clear(); .... input = new HtmlInputText(); .... children.add(input);
我需要添加什麼樣的代碼才能代替「在此添加ajax行爲」這一行,以及對於偵聽器方法的爭論是什麼?(關於替換?????的爭論方法)?
公共無效myAjaxListener(?????){...... {
我一直試圖讓這個手柄有一段時間了。我覺得我很接近,但不知道我需要的語法。我可以提供更多關於如何獲取組件ID並在動作偵聽器中搜索值的信息,如果這有幫助的話。
感謝
非常感謝您的回覆。我想我在代碼中發現了另一個我無法解釋的代碼。 「應用」按鈕是動態添加的,我添加了以下操作偵聽器:' – Burferd
無法弄清楚如何添加代碼段 - 如果沒有問題,我會用另一個問題回答我的問題。 – Burferd
顯然不是。我被禁止在8小時內回答自己的問題。我遇到的問題是,它看起來不像我的動作偵聽器,因爲我的「應用」按鈕沒有被調用,如果我動態添加它。我會做更多的調查並回來。再次感謝你的反饋。 – Burferd