在客户端访问组件属性----ADF Faces入门(文档阅读)

在客户端访问组件属性

     对于每个内置的组件属性,组件类种的便捷的访问 方法都是有效的。例如,你可以在客户端使用使用getValue() ,获取到的值和服务器端使用这个方法是一样的。ADF Faces的所有客户端属性使用getXyz函数命名约定,包括布尔属性。在类对象中,常量也是有效的。例如,你可以使用AdfRichDialog.STYLE_CLASS,而不是使用常数styleClass。PS:在JavaScript中,它是更有效地指向一个常量,而不是代码中的字符串,因为后者需要在每次调用的对象分配当一个组件的属性发生变化,最终的结果应该是组件的DOM是更新,以反映其新的状态在某些情况下,有些情况下,不会有到服务器的往返。组件的角色在这过程是相当的局限的:它仅仅是简单的存储了新的属性的值以及通知了peer的改变。peer包含了更新DOM去影响组件状态的逻辑。然而并非是所有组件的改变都通过peer来处理,有些组件的改变会被返回到服务器,并且这个组件是通过PPR进行的。

   如ADF Faces开头介绍的,大多数的属性的值在客户端被设置以后会导致自动同步到服务器端,尽管有些复杂的java 对象根本没有被发送到客户端。然而,有两个异类的属性种类,secured以及disconnected属性。

    secured属性是根本不能在客户端进行设置的属性。例如在客户端设置一个commandLink的immediate标志为true时,这个属性的改变会被发送到服务器端,会导致服务器端的验证被跳过,可能会引起安全漏洞。诚然,immediate是secured属性。(immediate是好东西,得好好研究)

安全属性列表:看b31973.pdf  p95-97

ADF Faces允许你设置disabled 属性以至于它可以是unsecure的。这可能是有用的当您需要使用JavaScript来启用和禁用按钮。当你设置unsecure 属性为true时,disabled 则就不安全了。例子:

    Disconnected属性是可以在客户端被设置,但是不会反馈到服务器端的。这些属性在客户端具有其独立于服务器端的生命周期。例如:AdfRichInputText有一个submittedValue属性,正如java的EditableValueHolder组件一样。设置这个属性不会直接影响到服务器端的。在这种情况,标准的设置这个属性的方法应该是在服务器端进行设置。

  一个属性既可以是secured属性,也可以是Disconnected属性。

如何在客户端设置属性,RCF提供了setXYZ去调用AdfUIComponent setProperty()函数,这个函数有两个必须的参数:

1. Property name (required)

2. New value (required)

在runtime的时候,设置组件属性的话,首先会调用setProperty()函数去设置属性值为新的值,并且同步的由新的值引起一个PropertyChangeEvent事件。设置属性的值也会使组件本身自行进行渲染。

在客户端使用bonus属性

在某些情况下,您可能需要将额外的信息发送到客户端,这些信息又不在内置属性的范围之内,这里就可以用bonus属性。Bonus属性是你可以通过使用clientAttribute标签手动添加到组件之中额外的组件。由于考虑到性能的原因,只能使用clientAttribute标签将bonus属性发送到客户端。

访问bonus属性的方式:

RCF利用marshalling属性值到客户端,marshalling层支持marshalling of 一系列对象类型,字符串,布尔值,日期,阵列,地图等。

为了减少 marshalling的花销,尽量节制的使用bonus属性。(如果你想在客户端使用标准的属性,可以通过设置clientComponent为true来做到,前面说过)。

如何创建bonus属性:

步骤:

 1. 拖一个你需要加bonus属性的组件到页面中

2. 拖一个Client属性作为刚才那个组件的自组件拖到页面中去

3.设置name和value

虽然客户端bonus属性会自动从服务器传送客户端,反之则不然也就是说,改变或设置属性奖bonus客户端将不会对服务器的影响。唯一已知nonbonus属性从客户端同步到服务器。如果你想要发送应用程序定义数据备份到服务器,你应该创建一个自定义事件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值