2017-05-31 78 views
0

我在其中一個頁面中有一個picklist組件(Primefaces 6.x)。領料有在陳列櫃中所示的「轉會」事件偵聽器:Primefaces Picklist只在添加時觸發傳輸事件

<p:ajax event="transfer" listener="#{pickListView.onTransfer}" update="msg" /> 

這工作得很好,我的方法被稱爲我每次添加或刪除目標列表中的項目時間。

我的問題是,如果只有在目標列表中添加項目時觸發事件處理程序,或者如果有方法在我的方法中捕獲從目標操作中移除並忽略我在bean中執行的所有驗證方法。

+0

正如我可以看到由css定義的按鈕事件。沒有可覆寫的js代碼。你可以在服務器端進行過濾。也許你可以重新定義鏈接到按鈕的類的類型。 (.ui-picklist-button-add,.ui-picklist-button-add-all,...) –

+0

通過在服務器上過濾,你的意思是什麼?有沒有辦法在服務器端識別是添加還是刪除操作? – Stephan

+0

我只是挖掘生成的源和CSS。但正如我所看到的,展示中有一個「select」和「unselect」事件類型。這不是一個好的解決方案嗎? –

回答

3

源代碼的開放性和良好的代碼完成IDE有一個優勢。兩者都可以顯示TransferEvent.javaisAdd()isRemove()方法。這些可以很容易地用於區分eventHandler實際使用哪一個。

public void onTransfer(TransferEvent event) { 

    if (event.isAdd()) { 
     // Do actual work 
    } 

} 
+0

這正是我想要的。謝謝。 – Stephan