2013年3月31日星期日

ADF_206:组件自动绑定到Managed Bean功能

开发运行环境:JDeveloper 11.1.2.3

创建页面时,有一个选项:Automatically Expose UI Components in a New Managed Bean。
勾上这个选项后,往页面中每增加一个组件都会自动Binding到一个Managed Bean的某个属性上。
我个人不太喜欢这个属性,因为不是所有的组件都需要设置binding属性。
但是如果万一你设置了该属性,那么该如何去掉呢?
点击页面,在Design模式下,选择菜单Design->Page Properties...

在弹出的界面中,勾掉Auto Bind,这样以后往页面增加的组件就不会自动Binding到Managed Bean了。

那么,如何去掉之前已经Binding的组件上的binding属性呢?
只能手工去除,好在JDeveloper支持正则表达式,以型如 binding="#{backingBeanScope.backing_untitled1.cb1}"为例,其正则表达式为binding="#\{backingBeanScope\.backing_untitled1.*\}"

按下Ctrl+R,弹出替换对话框,勾上Regular Expressions。
如果怕替换错误,可以勾上Prompted,每次提示替换。

然后,还需要手工删除Managed Bean的Java文件,以及删除掉adfc-config.xml中的Managed Bean的注册信息。

最后要提醒的是,Automatically Expose UI Components in a New Managed 这个选项一旦选中,后面创建的页面也会自动选中该选项。
这一点比较讨厌,所以必须手工重新勾掉该选项,这样以后的页面创建时,默认就不会选中该选项。
个人建议不要勾上此选项,减少不必要的麻烦,只在需要的时候为组件创建Binding。

参考文献:
1. http://tompeez.wordpress.com/tag/automatic-component-bindings/
2. http://hasamali.blogspot.com/2011/09/adf-jsf-stopping-auto-binding-in.html

没有评论: