关于Immediate属性的使用(注意)----ADF Faces入门(文档阅读)
2011-01-21 01:53
731 查看
Immediate属性是个神秘而又好用的东西。下列简称为I
你可以使用I去在生命周期的Apply Request Values阶段使对组件的访问升级。当actionSource组件被设置为I的时候,事件会被交付于Apply Request Values阶段而不是Invoke Application。actionListener会调用Render Response阶段,并且validation和model update两个阶段会被跳过。
假定你设置一个取消按钮为I,使action返回一个字符串并且导航回去到前一个界面。由于取消按钮是设置为I的,当用户点击取消按钮的时候,所有的验证都会被跳过,并且没有任何页面输入的值更新到model,用户就可以预期的导航回去了。
PS:话说来,即使一个按钮不进行任何导航,如果它被设置为I的话,它同样会跳过生命周期中间的几个阶段,直接到最后一步,XXXXXX阶段都会被跳过,因此不会有任何新的值被push到服务器。
生命周期流程如下:
和命令组件一样,对于那些可关闭的组件,editableValueHolder的组件等等,事件同样在Apply Request Values阶段交付。然而对于editableValueHolder组件来说,不同于其他组件,它不是跳过验证,转换等步骤,而是在生命周期中提前执行了(原先是在Process
Validations阶段之后),在Apply Request Values阶段就执行了,因此没有任何生命周期的步骤被跳过。
在一个或多个组件需要在别的组件之前进行验证的情况下,设置I是非常有用的。在相同的页面当中,如果被设置I的页面验证不通过了,其他组件就可以不用进行验证了,因此也就减少了页面中显示的错误的数量。
性能提示:在某些地方设置I会提高性能。
1。当你创建一个导航链并且拥有一个commandNavigationItem在导航组件中的时候,你需要去设置I去避免当导航到下一页的时候处理当前页的数据。
2。如果有一个input组件需要在所有其他组件之前进行验证,I应该被设置为true。任何错误可以在生命周期中提前察觉并且避免了其他额外的处理。看下面例子吧:
有两个输入框以及两个按钮组成的form,第一个输入框以及按钮是作为输入查询信息以供查询的的,他两的I被设置为true,另一对输入框及按钮是日期用以输入日期用以save
我们这个form在运行时候,根据用户输入的数据不同,生命周期的走势如何吧
操作步骤:
1.输入binky到日期输入框(不合法的数据)
2.输入dress到查询输入框
3.点击查询按钮执行查询dress
4.点击保存按钮执行保存binky作为日期
表示不解,上面生命周期走向!!!!
在相同页面中对editableValueHolder 以及actionSource组件设置I属性的时候,应注意以下问题:
1.如果一个editableValueHolder组件被标记I属性为true,它就会在Update Model阶段之前执行。这个时候当有一个I的actionSource组件需要从 一个editableValueHolder组件中获取数据会出现问题,正如editableValueHolder输入的数据在Update Model Values之前是不合法的。如果你有一个I的actionSource组件,并且这个组件需要获取数据,这时候也将需要的数据的editableValueHolder 区域也设置为I。然后,你可以对editableValueHolder 调用getValue方法,这时候会返回local值。它还没被pushed到服务器端,但是它在组件中是合法的。
2. 如果一个为I的editableValueHolder组件验证失败,所有为I的actionSource组件仍然会执行。
你可以使用I去在生命周期的Apply Request Values阶段使对组件的访问升级。当actionSource组件被设置为I的时候,事件会被交付于Apply Request Values阶段而不是Invoke Application。actionListener会调用Render Response阶段,并且validation和model update两个阶段会被跳过。
假定你设置一个取消按钮为I,使action返回一个字符串并且导航回去到前一个界面。由于取消按钮是设置为I的,当用户点击取消按钮的时候,所有的验证都会被跳过,并且没有任何页面输入的值更新到model,用户就可以预期的导航回去了。
PS:话说来,即使一个按钮不进行任何导航,如果它被设置为I的话,它同样会跳过生命周期中间的几个阶段,直接到最后一步,XXXXXX阶段都会被跳过,因此不会有任何新的值被push到服务器。
生命周期流程如下:
和命令组件一样,对于那些可关闭的组件,editableValueHolder的组件等等,事件同样在Apply Request Values阶段交付。然而对于editableValueHolder组件来说,不同于其他组件,它不是跳过验证,转换等步骤,而是在生命周期中提前执行了(原先是在Process
Validations阶段之后),在Apply Request Values阶段就执行了,因此没有任何生命周期的步骤被跳过。
在一个或多个组件需要在别的组件之前进行验证的情况下,设置I是非常有用的。在相同的页面当中,如果被设置I的页面验证不通过了,其他组件就可以不用进行验证了,因此也就减少了页面中显示的错误的数量。
性能提示:在某些地方设置I会提高性能。
1。当你创建一个导航链并且拥有一个commandNavigationItem在导航组件中的时候,你需要去设置I去避免当导航到下一页的时候处理当前页的数据。
2。如果有一个input组件需要在所有其他组件之前进行验证,I应该被设置为true。任何错误可以在生命周期中提前察觉并且避免了其他额外的处理。看下面例子吧:
<af:form> <af:inputText immediate="true" label="Search" value="#{mybean.search}" valueChangeListener="#{mybean.searchValueChangeListener}"/> <af:commandButton immediate="true" text="search" actionListener="#{mybean.searchActionListener}"/> [.... tags to render search result ....] <af:inputText label="Date" value="#{mybean.date}" valueChangeListener="#{mybean.valueChangeListener}"> <af:convertDateTime dateStyle="long"/> </af:inputText> <af:commandButton text="save" actionListener="#{mybean.actionListener}"/> </af:form>
有两个输入框以及两个按钮组成的form,第一个输入框以及按钮是作为输入查询信息以供查询的的,他两的I被设置为true,另一对输入框及按钮是日期用以输入日期用以save
我们这个form在运行时候,根据用户输入的数据不同,生命周期的走势如何吧
操作步骤:
1.输入binky到日期输入框(不合法的数据)
2.输入dress到查询输入框
3.点击查询按钮执行查询dress
4.点击保存按钮执行保存binky作为日期
表示不解,上面生命周期走向!!!!
在相同页面中对editableValueHolder 以及actionSource组件设置I属性的时候,应注意以下问题:
1.如果一个editableValueHolder组件被标记I属性为true,它就会在Update Model阶段之前执行。这个时候当有一个I的actionSource组件需要从 一个editableValueHolder组件中获取数据会出现问题,正如editableValueHolder输入的数据在Update Model Values之前是不合法的。如果你有一个I的actionSource组件,并且这个组件需要获取数据,这时候也将需要的数据的editableValueHolder 区域也设置为I。然后,你可以对editableValueHolder 调用getValue方法,这时候会返回local值。它还没被pushed到服务器端,但是它在组件中是合法的。
2. 如果一个为I的editableValueHolder组件验证失败,所有为I的actionSource组件仍然会执行。
相关文章推荐
- MediaPlayer类可用于控制音频/视频文件或流的播放。关于如何使用这个类的方法还可以阅读VideoView类的文档。
- 1关于script标签属性,注意点,浏览器文档模式,各种数据类型的转化
- 关于android:layout_weight属性使用注意事项
- 在客户端访问组件属性----ADF Faces入门(文档阅读)
- 关于linux 下read/write函数使用及注意事项
- 关于dnsmasq的使用配置和文档翻译
- Ext Js 3.2中关于PropertyGrid即属性表格的使用
- 关于android gravity属性,weight属性,layout_gravity属性的使用
- •关于vc多文档应用中opengl的使用-(2013/09/18)
- 【工作日志】--关于Vue.js中<slot>的使用方法及注意事项
- 关于ConstraintLayout 属性详解 和Chain的使用
- Android中关于线程使用的几点注意事项
- 关于phpcms2008 内部递增标变量 $n 使用时的注意事项
- VC 使用MSXML创建SVG文档中的新结点时出现xmlns="" 属性解决方法
- Spring学习笔记 关于Bean属性的初始化 - 使用inner bean以及List, Map与Set的初始化
- 使用jQuery匹配文档中所有的li元素,返回一个jQuery对象,然后通过数组下标的方式读取jQuery集合中第1个DOM元素,此时返回的是DOM对象,然后调用DOM属性innerHTML,读取该元素 包含的文本信息
- 关于中港扬盛的变频电源环境以及使用注意事项
- [置顶]关于使用input type=file 标签上传文件的注意细节(上传文件 无法获取文件 问题)
- DevExpress.XtraTreeList.TreeList的DataSource属性使用注意事项.
- 关于meta标签中的http-equiv属性使用介绍