2017-05-31 79 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