在本文中,我将重点介绍ADF Faces Javascript API方法以从客户端触发自定义事件。 例如:

function cliListener(actionEvent) {AdfCustomEvent.queue(actionEvent.getSource(), "servListener",null, true);}

我们可以使用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 ,则客户端事件将命令按钮的操作和操作侦听器方法之后在“ 调用应用程序”阶段触发。

让我们考虑一个非常简单的任务流的示例:

有两个视图活动: BrowseViewEditView 。 它们每个都有一个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方法执行。
应用请求值阶段。

而已!

参考: ADF Faces。 我们的JCG合作伙伴 Eugene Fedorenko在ADF实践博客上提供了即时的定制客户活动 。

翻译自: https://www.javacodegeeks.com/2014/02/adf-faces-immediate-custom-client-events.html

ADF Faces。 立即的自定义客户端事件相关推荐

  1. adf可以自定义溶剂吗_ADF Faces。 立即的自定义客户端事件

    adf可以自定义溶剂吗 在本文中,我将重点介绍ADF Faces Javascript API方法以从客户端触发自定义事件. 例如: function cliListener(actionEvent) ...

  2. DevExpress ASP.NET 使用经验谈(9)-Dev控件客户端事件 ClientSideEvents

    上一节,已经介绍了ASPxGridView的自定义列和基本事件 ,本节接着将介绍Dev控件的客户端事件模型. 在上节示例基础上,我们增加一行菜单,使用Dev的ASPxMenu来实现,如下图所示. 图一 ...

  3. adf开发_了解ADF Faces clientComponent属性

    adf开发 我相信大多数ADF开发人员都知道ADF Faces属性clientComponent . 在本文中,我将展示该属性实际上如何影响组件渲染以及它如何改变其行为. 让我们开始考虑一个非常简单的 ...

  4. 了解ADF Faces clientComponent属性

    我相信大多数ADF开发人员都知道ADF Faces属性clientComponent . 在这篇文章中,我将展示此属性实际上如何影响组件渲染以及它如何改变其行为. 让我们开始考虑一个非常简单的示例: ...

  5. Lync开发实例3—自定义客户端

    这节来简单说明下自定义客户端的开发方法. 首先我们打开Lync SDK的以下Sample: SignInUISuppressionMode 进入目录后,可以发现EnableUISuppressionM ...

  6. ADF Faces Core 标记库信息

    示例图像< af:attribute > 该属性标记是 JSF 标记 < f:attribute > 的修正版.该 JSF 标记用于求解绑定到该值属性的 ValueBindin ...

  7. Visual Studio 中指定自定义生成事件

    自定义生成事件打开方式 通过指定自定义生成事件,可以在生成开始之前或在它完成之后自动运行命令.在Visual Studio中通过右键项目->属性 进入项目属性菜单. 自定义生成事件的语法 生成事 ...

  8. 【.NET Core项目实战-统一认证平台】第七章 网关篇-自定义客户端限流

    上篇文章我介绍了如何在网关上增加自定义客户端授权功能,从设计到编码实现,一步一步详细讲解,相信大家也掌握了自定义中间件的开发技巧了,本篇我们将介绍如何实现自定义客户端的限流功能,来进一步完善网关的基础 ...

  9. 【.NET Core项目实战-统一认证平台】第六章 网关篇-自定义客户端授权

    上篇文章[.NET Core项目实战-统一认证平台]第五章 网关篇-自定义缓存Redis 我们介绍了网关使用Redis进行缓存,并介绍了如何进行缓存实现,缓存信息清理接口的使用.本篇我们将介绍如何实现 ...

最新文章

  1. LM393,LM741可以用作电压跟随器吗?
  2. 关于云计算 你所知道的可能不是真的
  3. php和python哪个学起来简单一点-python和php学习哪个更有发展
  4. 【Android 插件化】“ 插桩式 “ 插件化框架 ( 原理与实现思路 )
  5. Zabbix5.0监控系统安装详解
  6. c# 学习笔记 (1) 类型转换
  7. Leetcode 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 (每日一题 20210917)
  8. CL_GUI_PICTURE
  9. bashrc, bash_profile etc;
  10. python 多个列表合并_Python对两个有序列表进行合并和排序的例子
  11. hadoop fs 运维常用的几个命令
  12. mysql数据库 uft8_unicode_ci是utf8吗_MysQL数据库中utf8_unicode_ci与utf8_general_ci的区别
  13. 为什么 BetterScroll 初始化不能滚动?
  14. Nordic nRF52840实战学习--使用nRF52840开发板抓蓝牙数据包
  15. CreateIoCompletionPort和完成端口
  16. 正弦信号与噪声信号仿真生成实测信号,自相关分析
  17. 深度学习 简介 综述
  18. Excel中无法查找和替换
  19. Metasploit [基础]
  20. Spotlight搜索技巧

热门文章

  1. C++实现字符串的拼接
  2. java把控件跑挂了_Java代码动态修改 ConstraintLayout 内控件布局的辅助类
  3. linux更改桌面壁纸的脚本,自动更换桌面壁纸的脚本,支持Ubuntu 18.04系统
  4. 修改打印机ip工具_使用富士施乐一体机因动态IP导致不能打印与扫描的解决方法...
  5. review_core_basic_java(1)java程序设计概述
  6. 方法参数的值调用+引用调用+深浅拷贝
  7. 匿名内部类与Lambda表达式
  8. spring vaadin_在Spring Boot中使用Vaadin的简介
  9. java orm框架有哪些_Java Stream ORM现在带有JOIN
  10. mongodb启用身份验证_为您的Web应用程序启用两因素身份验证