实例化客户端组件----ADF Faces入门(文档阅读)

实例化客户端组件

默认的RCF没有保证哪些组件拥有客户端实例。你可以通过注册一个clientListener handler来做到与客户端组件交互。当一个组件被注册了clientListener handler以后,它会自动的拥有客户端组件的表现。倘若你需要在客户端设置某个组件不可用,你可以显示的设置该组件的clientComponent属性为true来使该组件可用。如果你想在客户端用程序对组件进行处理,你只有通过设置组件的clientComponent属性为true来做到。

当你设置某个组件的clientComponent属性为true,RCF会为该组件创建一个AdfUIComponent类的实例。这个类提供了你在客户端进行操作的API,提供了组件基本属性的获取方法,例如setProperty(),getProperty(),还提供了事件监听的注册以及事件的delivery-related。

例子:在客户端设置outputText的值为特定值

步骤:

1. 往页面中拖两个组件,一个按钮,一个outputText,outputText的clientComponent属性设置为true

2. 为按钮添加clientListener

3. 写JS代码,如代码

在没有组件实例去调AdfUIComponent.findComponent(expr)的时候,可以使用AdfPage.PAGE,这是一个提供静态reference给页面上下文的全局对象,但是如果你要获取的组件在一个命名容器中的话,必须使用AdfUIComponent.findComponent(expr)

      var greetingComponent=buttonComponent.findComponent(":greeting1");和var greetingComponent=AdfPage.PAGE.findComponentByAbsoluteId("greeting1");作用一致

在获取的组件不在一个命名容器中的适合有效

最后调侃下命名容器,我们是如何判断命名容器的呢,可以通过查阅标签文档,标签文档中都有说明哪些是命名容器组件,哪些不是。

如果不住一个命名容器里面的话,获取组件的表达方式如下:

例子:find某模板页中的某region中的某panel collection中的表:t1   :myTemplate:r1:pc1:t1

如果去获取的那个组件在相同region中的话,可以这样表示: ::pc1:t1

::表示回到上层结构,可以用我们目录结构表示的方式理解,回到上层目录,如../

倘若你知道你所要获取的组件总是在相同的命名容器的话,你可以选择使用绝对路径。反之,如果你知道所获取组件处于相对位置,你可以选择使用相对路径。

在客户端没有getChildren() 或者 getFacet()方法,然而,框架有AdfUIComponent.visitChildren()函数,它可以遍历所有子组件或者是facets

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值