天天看点

ADF 关于panelFormLayout 和panelGroupayout

很多新手或不熟悉ADF UI的开发人员在使用那二个组件的时候根本不清楚区别就直接拿来用从而导致页面内容乱套,而基于传统的思维又有一些人通过css来调整内容。其实这些都是错误的!

使用ADF的UI首先要清楚他提供的一些组件本身就实现了css或相关的javascript。我们平时的开发中,一个空白的页面首先是确定页面结构,然后再是存放内容。而ADF已经提供了很多已经实现了不同结构的UI组件.而panelGroupayout 就是其中之一。所以大部分情况我们不需要像jsp一样通过css+html组件来先布局结构。

panelGroupayout 是用于布局结构的组件,而panelFormLayout 准确的说不是结构组件,而是一个内容容器组件!他里面存放在是html的用于存在数据的组件(我称之为内容组件),比如input.所以当你想把N个内容组件存在在某一个结构中的时候,首先应该想到的是panelFormLayout .而如果一个结构中又还要包含子结构和内容的时候那当然是panelGroupayout 了。当然并不是说panelGroupayout 组件里就不能只放内容组件。如果只是单独的展现出内容组件用他是可以的。区别在于panelFormLayout 对内容组件可以更好更多的控制,比如统一设置label和field属性的宽度,每行每列显示的组件数量。

再说panelFormLayout的labelWidth和fieldWidth属性,这二个属性是统一设置panelFormLayout 里所有组件的label和field值。然后假设属性是绑定VO中的属性值,比如colnums这个值是读取vo属性的宽度,比如字段定义为varchar2(100),则colnums的值会是100即100个字符。而如果fieldWidth指定了小于colnums的值,根据CSS规则会使用最里层的样式规则,所以fieldWidth的值失效了!

关于panelFormLayout 的Rows和maxColumns属性。我们拉一个vo到页面以from显示的时候会看到默认是一列的下来!即panelFormLayout 是接列顺序显示的(并不考虑行),而如果指定了Rows而不指定maxColumns他会隐匿的指定maxColumns为3列!所以我们如果显示的指定maxColumns的值的时候能不超过3为最好。