ADF Faces。 立即的自定义客户端事件
在本文中,我將重點介紹ADF Faces Javascript API方法以從客戶端觸發自定義事件。 例如:
我們可以使用af:clientListener標記,以便將cliListener函數附加到命令按鈕,并在單擊按鈕時使該函數被調用。 在服務器端,我們可以捕獲事件并調用托管bean方法:
<af:commandButton text="TestButton" id="cb1" action="goEdit">?? <af:clientListener type="action" method="cliListener" /><af:serverListener type="servListener"method="#{TheBean.serverListener}"/></af:commandButton>問題是–此事件將傳遞到哪個生命周期階段,托管bean方法將在哪個階段觸發? 有時這很重要,因為它可以顯著改變應用程序的行為。
讓我們看一下AdfCustomEvent.queue方法的規范:
/*** @param {AdfUIComponent} Component to queue the custom event on* @param {String} the type of the event* @param {Object} a set of parameters to include on the event. Reserved* parameter names include "type" and "immediate".* @param (boolean) whether the custom event is "immediate" - which will* cause it to be delivered during Apply Request Values on the server,* or not immediate, in which case it will be delivered during* Invoke Application. */ AdfCustomEvent.queue = function(component, type, params, immediate) { ... }我將專注于立即數參數。 當其值為true時 ,客戶端事件將在“ 應用請求值”階段傳遞。 因此,它將在“ 調用應用程序”階段觸發命令按鈕的動作和動作偵聽器方法之前觸發。 而且,如果即時參數的值為false ,則客戶端事件將在命令按鈕的操作和操作偵聽器方法之后在“ 調用應用程序”階段觸發。
讓我們考慮一個非常簡單的任務流的示例:
有兩個視圖活動: BrowseView和EditView 。 它們每個都有一個PageDef文件。 BrowseView包含上面描述的TestButton 。 此按鈕將觸發goEdit操作,因此,當用戶單擊它時,他們將轉到EditView活動。 除此之外,單擊按鈕還調用cliListener JS函數,該函數將servListener自定義事件發送到服務器。 將捕獲此事件,并將調用托管bean方法:
public void serverListener(ClientEvent clientEvent) {BindingContext bc = BindingContext.getCurrent();DCBindingContainer dcb = (DCBindingContainer) bc.getCurrentBindingsEntry();//Do something with dcbSystem.out.println("dcb="+dcb.getName()); }如果我們在JS代碼中將即時參數的值設置為true
function cliListener(actionEvent) {AdfCustomEvent.queue(actionEvent.getSource(), "servListener",null, true);}然后是serverListener方法 將在轉到EditView之前在Apply Request Values階段調用。 當前綁定容器的名稱將如下所示:
..._pageDefs_BrowseViewPageDef_...但是,如果即時參數為false,則使用serverListener方法 將在命令按鈕的操作之后被調用,并且當前綁定容器的名稱將如下所示:
..._pageDefs_EditViewPageDef_...本文的示例應用程序需要JDeveloper R2。
注意! 以上內容對R2有好處。
在R1中,行為略有不同。 如果命令組件的操作導致導航到另一個視圖活動(如本例所示),并且客戶端事件以即時=假排隊,則將永遠不會調用服務器偵聽器中定義的托管bean方法。 但是,如果您保持相同的視圖活動,則將在“ 調用應用程序”階段執行托管bean方法。
如果即時= true,則無論如何都將在服務器偵聽器中定義的托管bean方法執行。
應用請求值階段。
而已!
翻譯自: https://www.javacodegeeks.com/2014/02/adf-faces-immediate-custom-client-events.html
總結
以上是生活随笔為你收集整理的ADF Faces。 立即的自定义客户端事件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《沙丘:香料战争》即时战略游戏 9 月
- 下一篇: 5种改善服务器日志记录的技术